On Mon, Apr 28, 2014 at 10:51:17PM +0000, squeak-dev-noreply@lists.squeakfoundation.org wrote:
Eliot Miranda uploaded a new version of Freetype-Plugin to project FT2Plugin for Freetype: http://www.squeaksource.com/FreetypePlugin/Freetype-Plugin-eem.70.mcz
==================== Summary ====================
Name: Freetype-Plugin-eem.70 Author: eem Time: 28 April 2014, 2:50:46.158 pm UUID: 99cf7736-f540-4e37-9afd-301215ea96b5 Ancestors: Freetype-Plugin-eem.69
Several uses of the results of arrayValueOf: were *before* the interpreterProxy failed check of that result, potentially causing null pointer defererences on failure.
Eliminated bogus uses of baseHeaderSize in favour of firstIndexableField:.
Simplified ftHandleValueFromReceiver: and rely on calling primitiveFail in clients (as all but two cases already did).
Simplified a few ip success: errorCode == 0. ip failed ifTrue: [^nil]'s.
Eliot,
This change breaks the trunk, see below.
FT2Plugin has been working in both trunk and oscog for quite a while, so this is something new. Reverting to the prior version (Freetype-Plugin-dtl.66) resolves the problem.
Dave
Building C object FT2Plugin/CMakeFiles/FT2Plugin.dir/home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c.o /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c: In function ‘primitiveEmboldenFaceGlyphSlotOutline’: /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:534:40: warning: dereferencing ‘void *’ pointer [enabled by default] errorCode = FT_Outline_Embolden( &face->glyph->outline, strength ); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:534:40: error: request for member ‘glyph’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c: In function ‘primitiveGetFaceCharMap’: /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:674:16: warning: dereferencing ‘void *’ pointer [enabled by default] charmap = face->charmap; ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:674:16: error: request for member ‘charmap’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c: In function ‘primitiveGetFaceCharMapsIntoArray’: /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:730:20: warning: dereferencing ‘void *’ pointer [enabled by default] numCharmaps = face->num_charmaps; ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:730:20: error: request for member ‘num_charmaps’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:736:16: warning: dereferencing ‘void *’ pointer [enabled by default] charmap = face->charmaps; ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:736:16: error: request for member ‘charmaps’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c: In function ‘primitiveGetPostscriptName’: /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:888:9: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default] buffer = FT_Get_Postscript_Name(face); ^ In file included from /usr/include/freetype2/freetype/tttables.h:25:0, from /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:38: /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c: In function ‘primitiveHasKerning’: /usr/include/freetype2/freetype/freetype.h:1134:17: warning: dereferencing ‘void *’ pointer [enabled by default] ( face->face_flags & FT_FACE_FLAG_KERNING ) ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:991:21: note: in expansion of macro ‘FT_HAS_KERNING’ _return_value = (((FT_HAS_KERNING( face )) << 1) | 1); ^ /usr/include/freetype2/freetype/freetype.h:1134:17: error: request for member ‘face_flags’ in something not a structure or union ( face->face_flags & FT_FACE_FLAG_KERNING ) ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:991:21: note: in expansion of macro ‘FT_HAS_KERNING’ _return_value = (((FT_HAS_KERNING( face )) << 1) | 1); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c: In function ‘primitiveLoadFaceBbox’: /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1112:12: warning: dereferencing ‘void *’ pointer [enabled by default] if (!(face->face_flags & FT_FACE_FLAG_SCALABLE)) { ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1112:12: error: request for member ‘face_flags’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1119:61: warning: dereferencing ‘void *’ pointer [enabled by default] pointOop = interpreterProxy->makePointwithxValueyValue(face->bbox.xMin, face->bbox.yMin); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1119:61: error: request for member ‘bbox’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1119:78: warning: dereferencing ‘void *’ pointer [enabled by default] pointOop = interpreterProxy->makePointwithxValueyValue(face->bbox.xMin, face->bbox.yMin); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1119:78: error: request for member ‘bbox’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1123:61: warning: dereferencing ‘void *’ pointer [enabled by default] pointOop = interpreterProxy->makePointwithxValueyValue(face->bbox.xMax, face->bbox.yMax); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1123:61: error: request for member ‘bbox’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1123:78: warning: dereferencing ‘void *’ pointer [enabled by default] pointOop = interpreterProxy->makePointwithxValueyValue(face->bbox.xMax, face->bbox.yMax); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1123:78: error: request for member ‘bbox’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c: In function ‘primitiveLoadFaceFields’: /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1167:63: warning: dereferencing ‘void *’ pointer [enabled by default] interpreterProxy->storeIntegerofObjectwithValue(1, rcvr, face->num_faces); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1167:63: error: request for member ‘num_faces’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1168:63: warning: dereferencing ‘void *’ pointer [enabled by default] interpreterProxy->storeIntegerofObjectwithValue(2, rcvr, face->face_index); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1168:63: error: request for member ‘face_index’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1169:63: warning: dereferencing ‘void *’ pointer [enabled by default] interpreterProxy->storeIntegerofObjectwithValue(3, rcvr, face->face_flags); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1169:63: error: request for member ‘face_flags’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1170:63: warning: dereferencing ‘void *’ pointer [enabled by default] interpreterProxy->storeIntegerofObjectwithValue(4, rcvr, face->style_flags); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1170:63: error: request for member ‘style_flags’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1171:63: warning: dereferencing ‘void *’ pointer [enabled by default] interpreterProxy->storeIntegerofObjectwithValue(5, rcvr, face->num_glyphs); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1171:63: error: request for member ‘num_glyphs’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1173:42: warning: dereferencing ‘void *’ pointer [enabled by default] strOop = ftAllocateStringForPointer(face->family_name); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1173:42: error: request for member ‘family_name’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1177:42: warning: dereferencing ‘void *’ pointer [enabled by default] strOop = ftAllocateStringForPointer(face->style_name); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1177:42: error: request for member ‘style_name’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1180:63: warning: dereferencing ‘void *’ pointer [enabled by default] interpreterProxy->storeIntegerofObjectwithValue(8, rcvr, face->num_fixed_sizes); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1180:63: error: request for member ‘num_fixed_sizes’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1181:64: warning: dereferencing ‘void *’ pointer [enabled by default] interpreterProxy->storeIntegerofObjectwithValue(10, rcvr, face->num_charmaps); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1181:64: error: request for member ‘num_charmaps’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1182:10: warning: dereferencing ‘void *’ pointer [enabled by default] if (face->face_flags & FT_FACE_FLAG_SCALABLE) { ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1182:10: error: request for member ‘face_flags’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1187:65: warning: dereferencing ‘void *’ pointer [enabled by default] interpreterProxy->storeIntegerofObjectwithValue(13, rcvr, face->units_per_EM); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1187:65: error: request for member ‘units_per_EM’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1188:65: warning: dereferencing ‘void *’ pointer [enabled by default] interpreterProxy->storeIntegerofObjectwithValue(14, rcvr, face->ascender); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1188:65: error: request for member ‘ascender’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1189:65: warning: dereferencing ‘void *’ pointer [enabled by default] interpreterProxy->storeIntegerofObjectwithValue(15, rcvr, face->descender); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1189:65: error: request for member ‘descender’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1190:65: warning: dereferencing ‘void *’ pointer [enabled by default] interpreterProxy->storeIntegerofObjectwithValue(16, rcvr, face->height); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1190:65: error: request for member ‘height’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1191:65: warning: dereferencing ‘void *’ pointer [enabled by default] interpreterProxy->storeIntegerofObjectwithValue(17, rcvr, face->max_advance_width); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1191:65: error: request for member ‘max_advance_width’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1192:65: warning: dereferencing ‘void *’ pointer [enabled by default] interpreterProxy->storeIntegerofObjectwithValue(18, rcvr, face->max_advance_height); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1192:65: error: request for member ‘max_advance_height’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1193:65: warning: dereferencing ‘void *’ pointer [enabled by default] interpreterProxy->storeIntegerofObjectwithValue(19, rcvr, face->underline_position); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1193:65: error: request for member ‘underline_position’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1194:65: warning: dereferencing ‘void *’ pointer [enabled by default] interpreterProxy->storeIntegerofObjectwithValue(20, rcvr, face->underline_thickness); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1194:65: error: request for member ‘underline_thickness’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c: In function ‘primitiveLoadGlyphSlotFromFace’: /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1285:11: warning: dereferencing ‘void *’ pointer [enabled by default] gs = face->glyph; ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1285:11: error: request for member ‘glyph’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c: In function ‘primitiveLoadOutlineArraysFromFace’: /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1376:11: warning: dereferencing ‘void *’ pointer [enabled by default] gs = face->glyph; ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1376:11: error: request for member ‘glyph’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c: In function ‘primitiveLoadOutlineSizesFromFace’: /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1474:11: warning: dereferencing ‘void *’ pointer [enabled by default] gs = face->glyph; ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1474:11: error: request for member ‘glyph’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c: In function ‘primitiveNewMemoryFaceFromExternalMemoryAndIndex’: /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1594:54: error: expected expression before ‘return’ ifNil(memPointer, interpreterProxy->primitiveFail(),return null); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c: In function ‘primitiveNumberOfOutlineCountours’: /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1651:11: warning: dereferencing ‘void *’ pointer [enabled by default] gs = face->glyph; ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1651:11: error: request for member ‘glyph’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c: In function ‘primitiveRenderGlyphIntoForm’: /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1708:50: warning: dereferencing ‘void *’ pointer [enabled by default] errorCode = FT_Outline_Get_Bitmap(library, &face->glyph->outline, &bitmap); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1708:50: error: request for member ‘glyph’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c: In function ‘primitiveRenderGlyphIntoFormWithRenderMode’: /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1761:50: warning: dereferencing ‘void *’ pointer [enabled by default] errorCode = FT_Outline_Get_Bitmap(library, &face->glyph->outline, &bitmap); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1761:50: error: request for member ‘glyph’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c: In function ‘primitiveTransformFaceGlyphSlotOutline’: /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1957:30: warning: dereferencing ‘void *’ pointer [enabled by default] FT_Outline_Transform( &face->glyph->outline, &matrix ); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:1957:30: error: request for member ‘glyph’ in something not a structure or union /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c: In function ‘primitiveTranslateFaceGlyphSlotOutline’: /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:2001:30: warning: dereferencing ‘void *’ pointer [enabled by default] FT_Outline_Translate( &face->glyph->outline, delta.x, delta.y ); ^ /home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c:2001:30: error: request for member ‘glyph’ in something not a structure or union make[2]: *** [FT2Plugin/CMakeFiles/FT2Plugin.dir/home/lewis/squeak/VM/src/plugins/FT2Plugin/FT2Plugin.c.o] Error 1 make[1]: *** [FT2Plugin/CMakeFiles/FT2Plugin.dir/all] Error 2 make: *** [all] Error 2
vm-dev@lists.squeakfoundation.org