]> err.no Git - sope/commitdiff
replaced usage of getCString on MacOS >= 10.4
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Mon, 3 Dec 2007 16:30:46 +0000 (16:30 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Mon, 3 Dec 2007 16:30:46 +0000 (16:30 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@1556 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-core/NGStreams/ChangeLog
sope-core/NGStreams/NGCTextStream.m
sope-core/NGStreams/NGTextStream.m
sope-core/NGStreams/Version

index 1a636f17ed7b0d8f6d390290c25297af78eb6d4b..aa19ac0321e86a0ec29c9146447ab82ea598eec1 100644 (file)
@@ -1,5 +1,8 @@
 2007-12-03  Helge Hess  <me@helgehess.eu>
 
+       * NGCTextStream.m: replaced usage of getCString on MacOS > 10.4
+         (v4.7.55)
+
        * NGTextStream.m: do not use exception handlers in combination with
          varargs on MacOS >10.5 (v4.7.54)
 
index a061c5a6f981869b7ff667a668bebf260d55f20f..3e40a3df85c4df3c225268f6cf328a2fe6e95fe2 100644 (file)
@@ -1,5 +1,6 @@
 /*
-  Copyright (C) 2000-2005 SKYRIX Software AG
+  Copyright (C) 2000-2007 SKYRIX Software AG
+  Copyright (C) 2007      Helge Hess
 
   This file is part of SOPE.
 
@@ -290,12 +291,24 @@ static void _flushAtExit(void) {
 - (BOOL)writeString:(NSString *)_string {
   unsigned char *str, *buf;
   unsigned toGo;
+
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1040
+  NSStringEncoding enc = [NSString defaultCStringEncoding];
   
+  // TBD: better use -maximumLengthOf... and then search for \0
+  if ((toGo = [_string lengthOfBytesUsingEncoding:enc]) == 0)
+    return YES;
+
+  buf = str = calloc(toGo + 1, sizeof(unsigned char));
+  [_string getCString:(char *)str maxLength:toGo encoding:enc];
+#else
   if ((toGo = [_string cStringLength]) == 0)
     return YES;
-  
+
   buf = str = calloc(toGo + 1, sizeof(unsigned char));
-  [_string getCString:(char *)str]; str[toGo] = '\0';
+  [_string getCString:(char *)str];
+#endif
+  str[toGo] = '\0';
   
   NS_DURING {
     while (toGo > 0) {
@@ -313,7 +326,7 @@ static void _flushAtExit(void) {
     }
   }
   NS_HANDLER {
-    if (buf) { free(buf); buf = NULL; };
+    if (buf != NULL) { free(buf); buf = NULL; };
     [localException raise];
   }
   NS_ENDHANDLER;
index 755c90e16fedc097c0c482cd37b3c1090513f7f4..dd9f522a351a1838e8f2a1cce3661a87899ee56d 100644 (file)
 
   va_start(ap, _format);
 
-#if MAC_OS_X_VERSION_MAX_ALLOWED > 1050
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1050
   /* As soon as we add an exception handler on Leopard compilation
    * breaks. Probably some GCC bug.
    */
index 5a9103fbcfe3a90091d3e23c80df915537dcc5fd..1e1b1b4fc4a61239d7b40fff10fac21af915cc33 100644 (file)
@@ -1,3 +1,3 @@
 # version file
 
-SUBMINOR_VERSION:=54
+SUBMINOR_VERSION:=55