|
@@ -1874,7 +1874,7 @@ static int stbtt__GetGlyphShapeTT(const stbtt_fontinfo *info, int glyph_index, s
|
|
|
if (comp_verts) STBTT_free(comp_verts, info->userdata);
|
|
|
return 0;
|
|
|
}
|
|
|
- if (num_vertices > 0) STBTT_memcpy(tmp, vertices, num_vertices*sizeof(stbtt_vertex));
|
|
|
+ if (num_vertices > 0 && vertices) STBTT_memcpy(tmp, vertices, num_vertices*sizeof(stbtt_vertex));
|
|
|
STBTT_memcpy(tmp+num_vertices, comp_verts, comp_num_verts*sizeof(stbtt_vertex));
|
|
|
if (vertices) STBTT_free(vertices, info->userdata);
|
|
|
vertices = tmp;
|
|
@@ -2242,7 +2242,7 @@ static int stbtt__run_charstring(const stbtt_fontinfo *info, int glyph_index, st
|
|
|
} break;
|
|
|
|
|
|
default:
|
|
|
- if (b0 != 255 && b0 != 28 && (b0 < 32 || b0 > 254))
|
|
|
+ if (b0 != 255 && b0 != 28 && b0 < 32)
|
|
|
return STBTT__CSERR("reserved operator");
|
|
|
|
|
|
// push immediate
|
|
@@ -4397,15 +4397,14 @@ static int stbtt__compute_crossings_x(float x, float y, int nverts, stbtt_vertex
|
|
|
float y_frac;
|
|
|
int winding = 0;
|
|
|
|
|
|
- orig[0] = x;
|
|
|
- orig[1] = y;
|
|
|
-
|
|
|
// make sure y never passes through a vertex of the shape
|
|
|
y_frac = (float) STBTT_fmod(y, 1.0f);
|
|
|
if (y_frac < 0.01f)
|
|
|
y += 0.01f;
|
|
|
else if (y_frac > 0.99f)
|
|
|
y -= 0.01f;
|
|
|
+
|
|
|
+ orig[0] = x;
|
|
|
orig[1] = y;
|
|
|
|
|
|
// test a ray from (-infinity,y) to (x,y)
|