[49204] trunk/base/src/tclobjc1.0

toby at macports.org toby at macports.org
Sun Apr 5 03:33:07 PDT 2009


Revision: 49204
          http://trac.macports.org/changeset/49204
Author:   toby at macports.org
Date:     2009-04-05 03:33:06 -0700 (Sun, 05 Apr 2009)
Log Message:
-----------
fix memory smasher (that happened to work most of the time)

Modified Paths:
--------------
    trunk/base/src/tclobjc1.0/objc_encoding.m
    trunk/base/src/tclobjc1.0/tclobjc.m

Modified: trunk/base/src/tclobjc1.0/objc_encoding.m
===================================================================
--- trunk/base/src/tclobjc1.0/objc_encoding.m	2009-04-05 10:13:24 UTC (rev 49203)
+++ trunk/base/src/tclobjc1.0/objc_encoding.m	2009-04-05 10:33:06 UTC (rev 49204)
@@ -53,15 +53,15 @@
 
 	switch(*type) {
 		case _C_CHARPTR:
-			*objPtr = Tcl_NewStringObj((char *) val, -1);
+			*objPtr = Tcl_NewStringObj(*(char **)val, -1);
 			return (TCL_OK);
 		case _C_INT:
-			*objPtr = Tcl_NewIntObj((int)(intptr_t)val);
+			*objPtr = Tcl_NewIntObj(*(int *)val);
 			return (TCL_OK);
 		case _C_ID:
-			*objPtr = TclObjC_NewIdObj(val);
+			*objPtr = TclObjC_NewIdObj(*(id *)val);
 			name = Tcl_GetString(*objPtr);
-			Tcl_CreateObjCommand(interp, (char *) name, tclobjc_dispatch, (id) val, NULL);
+			Tcl_CreateObjCommand(interp, (char *)name, tclobjc_dispatch, *(id *)val, NULL);
 			return (TCL_OK);
 		default:
 			/* Unhandled objc type encoding */

Modified: trunk/base/src/tclobjc1.0/tclobjc.m
===================================================================
--- trunk/base/src/tclobjc1.0/tclobjc.m	2009-04-05 10:13:24 UTC (rev 49203)
+++ trunk/base/src/tclobjc1.0/tclobjc.m	2009-04-05 10:33:06 UTC (rev 49204)
@@ -146,10 +146,12 @@
 
 		[invocation invoke];
 		fprintf(stderr, "result size = %lu\n", (unsigned long)[signature methodReturnLength]);
-		[invocation getReturnValue:&result_ptr];        
+		result_ptr = malloc([signature methodReturnLength]);
+		[invocation getReturnValue:result_ptr];
 		
 		result_type = tclobjc_getreturn_typestring(signature);
 		result = objc_to_tclobj(interp, &tcl_result, result_type, result_ptr);
+		free(result_ptr);
 		Tcl_SetObjResult(interp, tcl_result);
 	}
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20090405/140dcf75/attachment.html>


More information about the macports-changes mailing list