changeset 52:ab6217b8ae4c

Remove some C compiler warnings due to sloppy native code
author Mike Pavone <pavone@retrodev.com>
date Fri, 13 Jul 2012 18:10:38 -0700
parents 90542a7077a9
children 9482a0afe07c
files cbackend.js
diffstat 1 files changed, 13 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/cbackend.js	Fri Jul 13 17:57:00 2012 -0700
+++ b/cbackend.js	Fri Jul 13 18:10:38 2012 -0700
@@ -357,7 +357,7 @@
 			'argb = va_arg(args, ' + objtype + ' *);',
 			'ret = (' + objtype + ' *)make_object(&' + objtype + '_meta, NULL, 0);',
 			'ret->num = self->num ' + cop + ' argb->num;',
-			'return ret;'
+			'return &(ret->header);'
 		]
 	});
 }
@@ -390,6 +390,7 @@
 	addCompOp(int32, 'NEQ_', '!=', 'obj_int32');
 	addCompOp(int32, 'GEQ_', '>=', 'obj_int32');
 	addCompOp(int32, 'LEQ_', '<=', 'obj_int32');
+	int32.addInclude('<string.h>');
 	int32.addMessage('string', {
 		vars: {str: 'string *'},
 		lines: [
@@ -397,7 +398,7 @@
 			'str->data = malloc(12);',
 			'sprintf(str->data, "%d", self->num);',
 			'str->length = str->bytes = strlen(str->data);',
-			'return (object *)str;'
+			'return &(str->header);'
 		]
 	});
 	return int32;
@@ -426,7 +427,7 @@
 			'if (index->num >= 0 && index->num < self->size) {',
 			'	self->data[index->num] = va_arg(args, object *);',
 			'}',
-			'return (object *)self;'
+			'return &(self->header);'
 		]
 	});
 	array.addMessage('foreach', {
@@ -438,11 +439,11 @@
 			'	index->num = i;',
 			'	ccall(clos, 2, index, self->data[i]);',
 			'}',
-			'return (object *)self;'
+			'return &(self->header);'
 		]
 	});
 	array.addMessage('append', {
-		vars: {tmp: 'object *'},
+		vars: {tmp: 'object **'},
 		lines: [
 			'if (self->storage == self->size) {',
 			'	self->storage *= 2;',
@@ -454,7 +455,7 @@
 			'	self->data = tmp;',
 			'}',
 			'self->data[self->size++] = va_arg(args, object *);',
-			'return self;'
+			'return &(self->header);'
 		]
 	});
 	return array;
@@ -496,34 +497,34 @@
 		vars: {},
 		lines: [
 			'fwrite(self->data, 1, self->bytes, stdout);',
-			'return self;'
+			'return &(self->header);'
 		]
 	});
 	string.addMessage('string', {
 		vars: {},
-		lines: [ 'return self;' ]
+		lines: [ 'return &(self->header);' ]
 	});
 	string.addMessage('CAT_', {
 		vars: {argbo: 'object *', argb: 'string *', out: 'string *'},
 		lines: [
 			'argbo = va_arg(args, object *);',
-			'argb = mcall(' + getMethodId('string') + ', 1, argbo);',
+			'argb = (string *)mcall(' + getMethodId('string') + ', 1, argbo);',
 			'out = (string *)make_object(&string_meta, NULL, 0);',
 			'out->bytes = self->bytes + argb->bytes;',
 			'out->length = self->length + argb->length;',
 			'out->data = malloc(out->bytes+1);',
 			'memcpy(out->data, self->data, self->bytes);',
 			'memcpy(out->data + self->bytes, argb->data, argb->bytes + 1);',
-			'return out;'
+			'return &(out->header);'
 		]
 	});
 	string.addMessage('byte', {
 		vars: {index: 'obj_int32 *', intret: 'obj_int32 *'},
 		lines: [
 			'index = va_arg(args, obj_int32 *);',
-			'intret = make_object(&obj_int32_meta, NULL, 0);',
+			'intret = (obj_int32 *)make_object(&obj_int32_meta, NULL, 0);',
 			'intret->num = index->num < self->bytes ? self->data[index->num] : 0;',
-			'return intret;'
+			'return &(intret->header);'
 		]
 	});
 	return string;