]> err.no Git - sope/commitdiff
fixed free bug
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Thu, 21 Feb 2008 22:14:11 +0000 (22:14 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Thu, 21 Feb 2008 22:14:11 +0000 (22:14 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@1608 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-core/NGExtensions/ChangeLog
sope-core/NGExtensions/FdExt.subproj/NSString+Escaping.m
sope-core/NGExtensions/Version

index f54aba740806dcf3c84b087570143f44b5ba5829..2bf42ebb2c972510759a553fefb3b5399c7bd53b 100644 (file)
@@ -1,3 +1,8 @@
+2008-02-21  Helge Hess  <helge.hess@opengroupware.org>
+
+       * FdExt.subproj/NSString+Escaping.m: fixed a free() bug introduced in
+         the unichar conversion of v4.7.197 (v4.7.200)
+
 2008-02-21  Helge Hess  <helge.hess@opengroupware.org>
 
        * FdExt.subproj/NGPropertyListParser.m: fixed NSException not to use
index e31957e487beca7e9bf225f58b16e4b8c913bece..21f6b58872872dfd132c109beaa3525c80f9b628 100644 (file)
   // Unicode!
   unichar  *src;
   unichar  *buffer;
-  int      pos = 0;
+  int      len, pos, srcIdx;
   NSString *s;
   
-  if ((pos = [self length]) == 0)
+  if ((len = [self length]) == 0)
     return @"";
-
-  src = malloc(sizeof(unichar) * (pos + 2));
+  
+  src = malloc(sizeof(unichar) * (len + 2));
   [self getCharacters:src];
-  src[pos] = 0; // zero-terminate
+  src[len] = 0; // zero-terminate
   
-  buffer = malloc(sizeof(unichar) * ((pos * 2) + 1));
+  buffer = malloc(sizeof(unichar) * ((len * 2) + 1));
   
-  for (pos = 0; *src != 0; pos++, src++) {
-    switch (*src) {
+  for (pos = 0, srcIdx = 0; srcIdx < len; pos++, srcIdx++) {
+    switch (src[srcIdx]) {
       case '\n':
         buffer[pos] = '\\'; pos++;
         buffer[pos] = 'n';
         break;
         
       default:
-        buffer[pos] = *src;
+        buffer[pos] = src[srcIdx];
         break;
     }
   }
   buffer[pos] = '\0';
   
   s = [NSString stringWithCharacters:buffer length:pos];
-  free(buffer); buffer = NULL;
-  free(src);    src    = NULL;
+  
+  if (buffer != NULL) { free(buffer); buffer = NULL; }
+  if (src    != NULL) { free(src);    src    = NULL; }
   return s;
 }
 
index d282e4a0766bd84f96826fc054d8f1821ae77c2b..1f300e3b4733e60f4602f3b39f793eff59c43862 100644 (file)
@@ -1,6 +1,6 @@
 # version
 
-SUBMINOR_VERSION:=199
+SUBMINOR_VERSION:=200
 
 # v4.3.115 requires libFoundation v1.0.59
 # v4.2.72  requires libEOControl  v4.2.39