# HG changeset patch # User Mike Pavone # Date 1342228238 25200 # Node ID ab6217b8ae4c29e90847d26bb3f76657819c3050 # Parent 90542a7077a93482c95e07b6e63d13d31f365e68 Remove some C compiler warnings due to sloppy native code diff -r 90542a7077a9 -r ab6217b8ae4c cbackend.js --- 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(''); 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;