You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by od...@apache.org on 2008/09/10 14:02:17 UTC

svn commit: r693806 - /harmony/enhanced/classlib/trunk/modules/awt/src/main/native/fontlib/shared/ParsingTables.cpp

Author: odeakin
Date: Wed Sep 10 05:02:16 2008
New Revision: 693806

URL: http://svn.apache.org/viewvc?rev=693806&view=rev
Log:
Fixing errors from HARMONY-5976:
 - Fixes a few potential memory leaks.
 - Use correct deallocator for arrays.
 - Remove unreadable comment.

Modified:
    harmony/enhanced/classlib/trunk/modules/awt/src/main/native/fontlib/shared/ParsingTables.cpp

Modified: harmony/enhanced/classlib/trunk/modules/awt/src/main/native/fontlib/shared/ParsingTables.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/awt/src/main/native/fontlib/shared/ParsingTables.cpp?rev=693806&r1=693805&r2=693806&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/awt/src/main/native/fontlib/shared/ParsingTables.cpp (original)
+++ harmony/enhanced/classlib/trunk/modules/awt/src/main/native/fontlib/shared/ParsingTables.cpp Wed Sep 10 05:02:16 2008
@@ -658,11 +658,11 @@
             return -1;
         }
 		/* read 'hmtx' table */
-		*hm = new HMetrics[numOfHMetrics];
+        *hm = new HMetrics[numOfHMetrics];
 
         size = (fint)fread(*hm, sizeof(HMetrics), numOfHMetrics, tt_file);
         if (size != numOfHMetrics){
-			delete[] hm;
+			delete[] *hm;
 //            printf("Error reading Table 'hmtx' from file.");
             return -1;
         }
@@ -690,12 +690,12 @@
 	ufshort *gShortOffsets = NULL;
     fint size, i;
 
-	gLongOffsets = new uflong[numGlyphs+1];
-	if (!(*gOffsets).format)
-		gShortOffsets = new ufshort[numGlyphs+1];
-
     if (searchTable(hTable, &offset, tt_file) && searchTable(gTable,&localGlyfOffset,tt_file))
 	{
+        gLongOffsets = new uflong[numGlyphs+1];
+        if (!gOffsets->format)
+            gShortOffsets = new ufshort[numGlyphs+1];
+
         /* move position to the 'loca' table */
         size = fseek(tt_file, offset, SEEK_SET);
         if (size != 0)
@@ -705,7 +705,7 @@
 			delete[] gLongOffsets;
 			gLongOffsets = NULL;
 
-			if (gOffsets->format)
+			if (!gOffsets->format)
 			{
 				delete[] gShortOffsets;
 			}
@@ -740,7 +740,7 @@
 			for (i=0;i<=numGlyphs;i++)
 				gLongOffsets[i] = wReverse(gShortOffsets[i])*2+localGlyfOffset;
 		}
-		(*gOffsets).offsets = gLongOffsets;
+		gOffsets->offsets = gLongOffsets;
 		delete[] gShortOffsets;
 	}
 
@@ -918,7 +918,7 @@
 		if (size != numOfContours)
 		{
 //			printf("Error reading endPtsOfContours for someone glyph.");
-			delete endPtsOfContours;
+			delete[] endPtsOfContours;
 			return -1;
 		}
 
@@ -1019,6 +1019,8 @@
 			delete[] flags;
 			delete[] instructions;
 			delete[] endPtsOfContours;
+            delete[] xCoord;
+            delete[] yCoord;
 			return -1;
 		}
 
@@ -1029,6 +1031,8 @@
 			delete[] flags;
 			delete[] instructions;
 			delete[] endPtsOfContours;
+            delete[] xCoord;
+            delete[] yCoord;
 			return -1;
 		}
 		
@@ -1036,7 +1040,7 @@
 		rep=0;
 		fint x=0, y=0;
 		ffloat xFirstInContour,yFirstInContour;
-		bool contBegin; //íà÷àëî êîíòóðà
+		bool contBegin;
 
 		for (j=0; j<numOfContours;j++)
 		{