summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authormathog <>2015-05-21 17:23:01 +0000
committermathog <>2015-05-21 17:23:01 +0000
commit9f1c113eb98e7898f14502c69d8e3f7c35664c11 (patch)
treefbf61f7f3e48d64940a6a2b8136177a098768334 /src
parentDon't fill entry box with zeros while typing. Bug introduced with r14160. (diff)
downloadinkscape-9f1c113eb98e7898f14502c69d8e3f7c35664c11.tar.gz
inkscape-9f1c113eb98e7898f14502c69d8e3f7c35664c11.zip
patch bug 1294784
(bzr r14167)
Diffstat (limited to 'src')
-rw-r--r--src/display/drawing-text.cpp3
-rw-r--r--src/style-internal.cpp15
2 files changed, 17 insertions, 1 deletions
diff --git a/src/display/drawing-text.cpp b/src/display/drawing-text.cpp
index e20a7ff2a..3928ad796 100644
--- a/src/display/drawing-text.cpp
+++ b/src/display/drawing-text.cpp
@@ -367,7 +367,7 @@ void DrawingText::decorateStyle(DrawingContext &dc, double vextent, double xphas
/* returns scaled line thickness */
void DrawingText::decorateItem(DrawingContext &dc, double phase_length, bool under)
{
- if (_nrstyle.font_size < 1.0e-32)return; // would cause a divide by zero and nothing would be visible anyway
+ if ( _nrstyle.font_size <= 1.0e-32 )return; // might cause a divide by zero or overflow and nothing would be visible anyway
double tsp_width_adj = _nrstyle.tspan_width / _nrstyle.font_size;
double tsp_asc_adj = _nrstyle.ascender / _nrstyle.font_size;
double tsp_size_adj = (_nrstyle.ascender + _nrstyle.descender) / _nrstyle.font_size;
@@ -381,6 +381,7 @@ void DrawingText::decorateItem(DrawingContext &dc, double phase_length, bool und
Geom::Point p2;
// All lines must be the same thickness, in combinations, line_through trumps underline
double thickness = final_underline_thickness;
+ if ( thickness <= 1.0e-32 )return; // might cause a divide by zero or overflow and nothing would be visible anyway
dc.setTolerance(0.5); // Is this really necessary... could effect dots.
if( under ) {
diff --git a/src/style-internal.cpp b/src/style-internal.cpp
index 0e53da0d3..c117a97f9 100644
--- a/src/style-internal.cpp
+++ b/src/style-internal.cpp
@@ -1931,6 +1931,11 @@ SPIFontSize::read( gchar const *str ) {
unit = length.unit;
value = length.value;
computed = length.computed;
+ /* Set a minimum font size to something much smaller than should ever (ever!) be encountered in a real file.
+ If a bad SVG file is encountered and this is zero odd things
+ might happen because the inverse is used in some scaling actions.
+ */
+ if ( computed <= 1.0e-32 ) { computed = 1.0e-32; }
if( unit == SP_CSS_UNIT_PERCENT ) {
type = SP_FONT_SIZE_PERCENTAGE;
} else {
@@ -2011,6 +2016,11 @@ SPIFontSize::cascade( const SPIBase* const parent ) {
break;
}
}
+ /* Set a minimum font size to something much smaller than should ever (ever!) be encountered in a real file.
+ If a bad SVG file is encountered and this is zero odd things
+ might happen because the inverse is used in some scaling actions.
+ */
+ if ( computed <= 1.0e-32 ) { computed = 1.0e-32; }
} else {
std::cerr << "SPIFontSize::cascade(): Incorrect parent type" << std::endl;
}
@@ -2099,6 +2109,11 @@ SPIFontSize::merge( const SPIBase* const parent ) {
}
}
} // Relative size
+ /* Set a minimum font size to something much smaller than should ever (ever!) be encountered in a real file.
+ If a bad SVG file is encountered and this is zero odd things
+ might happen because the inverse is used in some scaling actions.
+ */
+ if ( computed <= 1.0e-32 ) { computed = 1.0e-32; }
} // Parent set and not inherit
} else {
std::cerr << "SPIFontSize::merge(): Incorrect parent type" << std::endl;