rev 579 - in trunk: modules/File modules/Prosist modules/Re pr/test src
SVN User <[email protected]> Fri, 04 Jun 2004 21:50:48 -0400
| Newsgroups | gmane.comp.lang.prothon.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: mark
Date: 2004-06-04 21:50:45 -0400 (Fri, 04 Jun 2004)
New Revision: 579
Modified:
trunk/modules/File/File.c
trunk/modules/Prosist/Prosist.c
trunk/modules/Re/Re.c
trunk/pr/test/test.pr
trunk/src/builtins-attrdict.c
trunk/src/builtins-dict.c
trunk/src/builtins-float.c
trunk/src/builtins-int.c
trunk/src/builtins-list.c
trunk/src/builtins-protolist.c
trunk/src/builtins-string.c
trunk/src/builtins-thread.c
trunk/src/builtins-tuple.c
trunk/src/interp.c
trunk/src/object.c
trunk/src/parser_routines.c
trunk/src/symbol.c
Log:
fixed iter_ bug
Modified: trunk/modules/File/File.c
===================================================================
--- trunk/modules/File/File.c 2004-06-04 22:39:52 UTC (rev 578)
+++ trunk/modules/File/File.c 2004-06-05 01:50:45 UTC (rev 579)
@@ -281,7 +281,7 @@
size = (size_t) size_in;
str_obj = NEW_OBJ(OBJ(STRING_PROTO));
if (size < IMMEDIATE_DATA_LEN) {
- str_obj->data_type = DATA_TYPE_IMMDATA;
+ SET_TYPE_IF_EXC(OBJ(STRING_PROTO), str_obj, DATA_TYPE_IMMDATA) return NULL;
buf = str_obj->data.str;
} else {
obj_str = obj_malloc(ist, OBJ(STRING_PROTO), str_obj, sizeof(pr_str_t)+size+1);
@@ -359,7 +359,7 @@
size = (size_t) size_in;
str_obj = NEW_OBJ(OBJ(STRING_PROTO));
if (size < IMMEDIATE_DATA_LEN) {
- str_obj->data_type = DATA_TYPE_IMMDATA;
+ SET_TYPE_IF_EXC(OBJ(STRING_PROTO), str_obj, DATA_TYPE_IMMDATA) return NULL;
buf = str_obj->data.str;
} else {
obj_str = obj_malloc(ist, OBJ(STRING_PROTO), str_obj, sizeof(pr_str_t)+size+1);
@@ -438,7 +438,7 @@
while (aprerr != APR_EOF && (readall || total_read < size)) {
str_obj = NEW_OBJ(OBJ(STRING_PROTO));
if (size < IMMEDIATE_DATA_LEN) {
- str_obj->data_type = DATA_TYPE_IMMDATA;
+ SET_TYPE_IF_EXC(OBJ(STRING_PROTO), str_obj, DATA_TYPE_IMMDATA) return NULL;
buf = str_obj->data.str;
} else {
obj_str = obj_malloc(ist, OBJ(STRING_PROTO), str_obj, sizeof(pr_str_t)+size+1);
Modified: trunk/modules/Prosist/Prosist.c
===================================================================
--- trunk/modules/Prosist/Prosist.c 2004-06-04 22:39:52 UTC (rev 578)
+++ trunk/modules/Prosist/Prosist.c 2004-06-05 01:50:45 UTC (rev 579)
@@ -150,7 +150,7 @@
//******************************** new_mutwrap_obj ****************************
obj_p new_mutwrap_obj(isp ist, obj_p obj) {
obj_p mutwrap_obj = new_object(ist, MutWrap_OBJ);
- mutwrap_obj->data_type = DATA_TYPE_DATAPTR;
+ SET_TYPE_IF_EXC(MutWrap_OBJ, mutwrap_obj, DATA_TYPE_DATAPTR) return NULL;
mutwrap_obj->data.ptr = obj;
set_immutable(mutwrap_obj);
return mutwrap_obj;
@@ -624,7 +624,7 @@
goto done;
}
case 'i':
- obj->data_type = DATA_TYPE_IMMDATA;
+ SET_TYPE_IF_EXC(OBJ(INT_PROTO), obj, DATA_TYPE_IMMDATA) return NULL;
for(n=0,p++; *p != ':'; p++)
n = n*10 + *p - '0';
obj->imm_data_len = n;
Modified: trunk/modules/Re/Re.c
===================================================================
--- trunk/modules/Re/Re.c 2004-06-04 22:39:52 UTC (rev 578)
+++ trunk/modules/Re/Re.c 2004-06-05 01:50:45 UTC (rev 579)
@@ -120,7 +120,7 @@
return NULL;
}
re_obj = NEW_OBJ(ReCompiled_OBJ);
- re_obj->data_type = DATA_TYPE_DATAPTR;
+ SET_TYPE_IF_EXC(ReCompiled_OBJ, re_obj, DATA_TYPE_DATAPTR) return NULL;
re_obj->data.ptr = e;
set_attr(ist, re_obj, sym(ist, "pattern"), parms[1]);
set_attr(ist, re_obj, sym(ist, "flags"), parms[3]);
Modified: trunk/pr/test/test.pr
===================================================================
--- trunk/pr/test/test.pr 2004-06-04 22:39:52 UTC (rev 578)
+++ trunk/pr/test/test.pr 2004-06-05 01:50:45 UTC (rev 579)
@@ -1,33 +1,16 @@
#!/usr/bin/env prothon
-print "these should all be true\n"
+def hex(n):
+ s = ""
+ while n:
+ d = n & 0xf
+ n = n >> 4
+ if d < 10: s = ('0'.ord()+d).chr() + s
+ else: s = ('a'.ord()+d-10).chr() + s
+ return s
+
+print hex(0x100)
+
+n=0x0123456789abcdef
-print 1 < 2 < 3 < 5 < 199
-
-print 10 < 20 <= 30 <= 30 >= 30 >= 20 > 10
-
-print 1 < 2 > 1 < 2 > 1
-
-print 1 >= 1 == 1 != 2 == 2 > 1 <= 1 <= 2
-
-print "\n\nthese should all be false\n"
-
-print 1 < 2 < 3 < 2 < 199
-
-print 10 < 20 <= 30 <= 29 >= 30 >= 20 > 10
-
-print 1 < 2 > 2 < 2 > 1
-
-print 1 >= 1 == 2 != 2 == 2 > 1 <= 1 <= 2
-
-def f(i):
- print i,
- return i
-
-print "\n\nThis should print 0 1 2\n"
-f(0) < f(1) < f(2)
-
-print "\n\nThis should print 0 1\n"
-f(0) > f(1) < f(2)
-
-print
+print hex(n & 0x0f0f0f0f0f0f0f0f)
Modified: trunk/src/builtins-attrdict.c
===================================================================
--- trunk/src/builtins-attrdict.c 2004-06-04 22:39:52 UTC (rev 578)
+++ trunk/src/builtins-attrdict.c 2004-06-05 01:50:45 UTC (rev 579)
@@ -69,7 +69,7 @@
// ***************************** new_attrdict_obj *****************************
obj_p new_attrdict_obj(isp ist, obj_p obj) {
obj_p self = new_object(ist, AttrDict_OBJ);
- self->data_type = DATA_TYPE_DATAPTR;
+ SET_TYPE_IF_EXC(AttrDict_OBJ, self, DATA_TYPE_DATAPTR) return NULL;
self->data.ptr = obj;
set_unclonable(self);
return self;
@@ -139,14 +139,14 @@
set_obj_id(AttrDict_OBJ, *, AttrDict);
set_attr(ist, OBJ(OBJECT), sym(ist, "AttrDict"), AttrDict_OBJ);
- AttrDict_OBJ->data_type = DATA_TYPE_DATAPTR;
+ SET_TYPE_IF_EXC(AttrDict_OBJ, AttrDict_OBJ, DATA_TYPE_DATAPTR) return;
AttrDict_OBJ->data.ptr = OBJ(OBJECT);
set_unclonable(AttrDict_OBJ);
}
DEF(AttrDict, init_, FORM_RPARAM) {
BIN_EMPTY_CHK();
- self->data_type = DATA_TYPE_DATAPTR;
+ SET_TYPE_IF_EXC(AttrDict_OBJ, self, DATA_TYPE_DATAPTR) return NULL;
self->data.ptr = parms[1];
set_unclonable(self);
return OBJ(NONE);
Modified: trunk/src/builtins-dict.c
===================================================================
--- trunk/src/builtins-dict.c 2004-06-04 22:39:52 UTC (rev 578)
+++ trunk/src/builtins-dict.c 2004-06-05 01:50:45 UTC (rev 579)
@@ -529,7 +529,7 @@
obj_p list_obj, gen_obj = NEW_OBJ(DictGen_OBJ);
BIN_CONTENT_CHK(Dict);
- gen_obj->data_type = DATA_TYPE_DATAPTR;
+ SET_TYPE_IF_EXC(DictGen_OBJ, gen_obj, DATA_TYPE_DATAPTR) return NULL;
gen_obj->data.ptr = list_obj = dict_keys(ist, self);
listlen(list_obj) = 0;
Modified: trunk/src/builtins-float.c
===================================================================
--- trunk/src/builtins-float.c 2004-06-04 22:39:52 UTC (rev 578)
+++ trunk/src/builtins-float.c 2004-06-05 01:50:45 UTC (rev 579)
@@ -70,21 +70,18 @@
#define is_Float(objid) (has_proto(ist, objid, Float_OBJ))
#define Float_value(objid) (objid->data.f64)
+MODULE_DECLARE(Float);
//********************************* new_float_obj *****************************
obj_p new_float_obj(isp ist, double num){
- obj_p obj = NEW_OBJ(OBJ(FLOAT_PROTO));
- obj->data_type = DATA_TYPE_IMMDATA;
+ obj_p obj = NEW_OBJ(Float_OBJ);
+ SET_TYPE_IF_EXC(Float_OBJ, obj, DATA_TYPE_IMMDATA) return NULL;
obj->imm_data_len = 8;
obj->data.f64 = num;
obj->immutable = TRUE;
return obj;
}
-
-MODULE_DECLARE(Float);
-
-
MODULE_START(Float)
{
Float_OBJ = OBJ(FLOAT_PROTO) = NEW_OBJ(NULL);
@@ -99,7 +96,7 @@
set_attr(ist, OBJ(OBJECT), sym(ist, "Float"), OBJ(FLOAT_PROTO));
set_attr(ist, OBJ(OBJECT), sym(ist, "Imaginary"), OBJ(IMAG_PROTO));
- Float_OBJ->data_type = DATA_TYPE_IMMDATA;
+ SET_TYPE_IF_EXC(Float_OBJ, Float_OBJ, DATA_TYPE_IMMDATA) return;
Float_OBJ->imm_data_len = IMMEDIATE_DATA_LEN;
Float_OBJ->data.f64 = 0.0;
Modified: trunk/src/builtins-int.c
===================================================================
--- trunk/src/builtins-int.c 2004-06-04 22:39:52 UTC (rev 578)
+++ trunk/src/builtins-int.c 2004-06-05 01:50:45 UTC (rev 579)
@@ -132,7 +132,7 @@
//********************************* new_int_obj *******************************
obj_p new_int_obj(isp ist, i64_t num){
obj_p obj = NEW_OBJ(OBJ(INT_PROTO));
- obj->data_type = DATA_TYPE_IMMDATA;
+ SET_TYPE_IF_EXC(OBJ(INT_PROTO), obj, DATA_TYPE_IMMDATA) return NULL;
obj->imm_data_len = 8;
obj->data.i64 = num;
obj->immutable = TRUE;
@@ -145,8 +145,9 @@
obj_p obj;
long_normalize(longp);
len = sizeof(long_t) + abs(longp->dsize) * sizeof(digit);
- obj = NEW_OBJ(OBJ(INT_PROTO));
- obj->data_type = DATA_TYPE_DATAPTR;
+ obj = NEW_OBJ(Int_OBJ);
+
+ SET_TYPE_IF_EXC(Int_OBJ, obj, DATA_TYPE_DATAPTR) return NULL;
obj->data.ptr = pr_malloc(len);
memcpy(obj->data.ptr, longp, len);
long_size(obj) = abs(longp->dsize);
@@ -2071,7 +2072,7 @@
set_attr(ist, OBJ(OBJECT), sym(ist, "Int"), Int_OBJ);
MODULE_SET_DOC(Int, "integer object prototype");
set_obj_id(Int_OBJ, *, Int);
- Int_OBJ->data_type = DATA_TYPE_IMMDATA;
+ SET_TYPE_IF_EXC(Int_OBJ, Int_OBJ, DATA_TYPE_IMMDATA) return;
Int_OBJ->imm_data_len = IMMEDIATE_DATA_LEN;
Int_OBJ->data.i64 = 0;
@@ -2086,11 +2087,11 @@
INT____PARAM(0, i);
CHECK_TYPE_EXC(i, OBJ(INT_PROTO), integer);
if (i->data_type == DATA_TYPE_IMMDATA) {
- self->data_type = DATA_TYPE_IMMDATA;
+ SET_TYPE_IF_EXC(Int_OBJ, self, DATA_TYPE_IMMDATA) return NULL;
self->imm_data_len = 8;
self->data.i64 = i->data.i64;
} else {
- self->data_type = DATA_TYPE_DATAPTR;
+ SET_TYPE_IF_EXC(Int_OBJ, self, DATA_TYPE_DATAPTR) return NULL;
self->data.ptr = copy_longp(i->data.ptr, 0);
}
return OBJ(NONE);
Modified: trunk/src/builtins-list.c
===================================================================
--- trunk/src/builtins-list.c 2004-06-04 22:39:52 UTC (rev 578)
+++ trunk/src/builtins-list.c 2004-06-05 01:50:45 UTC (rev 579)
@@ -87,7 +87,7 @@
obj_p list_obj = NEW_OBJ(OBJ(LIST_PROTO));
list_p lstp = list_obj->data.ptr =
pr_malloc(list_sizeof(max(initial_size,2)));
- list_obj->data_type = DATA_TYPE_DATAPTR;
+ SET_TYPE_IF_EXC(List_OBJ, list_obj, DATA_TYPE_DATAPTR) return NULL;
lstpsize(lstp) = max(initial_size,2);
lstplen(lstp) = 0;
return list_obj;
@@ -306,7 +306,7 @@
set_obj_id(List_OBJ, *, List);
set_attr(ist, OBJ(OBJECT), sym(ist, "List"), List_OBJ);
- List_OBJ->data_type = DATA_TYPE_DATAPTR;
+ SET_TYPE_IF_EXC(List_OBJ, List_OBJ, DATA_TYPE_DATAPTR) return;
lstp = List_OBJ->data.ptr = pr_malloc(list_sizeof(2));
lstpsize(lstp) = 2;
lstplen(lstp) = 0;
@@ -587,7 +587,7 @@
raise_exception(ist, OBJ(OUTOFMEMORY_EXC), "memory allocation failed for list multiplication");
return NULL;
}
- res->data_type = DATA_TYPE_DATAPTR;
+ SET_TYPE_IF_EXC(List_OBJ, res, DATA_TYPE_DATAPTR) return NULL;
lstpsize(lstp) = size;
lstplen(lstp) = size;
for(i=0; i < times; i++)
Modified: trunk/src/builtins-protolist.c
===================================================================
--- trunk/src/builtins-protolist.c 2004-06-04 22:39:52 UTC (rev 578)
+++ trunk/src/builtins-protolist.c 2004-06-05 01:50:45 UTC (rev 579)
@@ -69,7 +69,7 @@
// ***************************** new_protolist_obj ****************************
obj_p new_protolist_obj(isp ist, obj_p obj) {
obj_p self = new_object(ist, ProtoList_OBJ);
- self->data_type = DATA_TYPE_DATAPTR;
+ SET_TYPE_IF_EXC(ProtoList_OBJ, self, DATA_TYPE_DATAPTR) return NULL;
self->data.ptr = obj;
set_unclonable(self);
return self;
@@ -116,7 +116,7 @@
DEF(ProtoList, init_, FORM_RPARAM) {
BIN_EMPTY_CHK();
- self->data_type = DATA_TYPE_DATAPTR;
+ SET_TYPE_IF_EXC(ProtoList_OBJ, self, DATA_TYPE_DATAPTR) return NULL;
self->data.ptr = parms[1];
set_unclonable(self);
return OBJ(NONE);
Modified: trunk/src/builtins-string.c
===================================================================
--- trunk/src/builtins-string.c 2004-06-04 22:39:52 UTC (rev 578)
+++ trunk/src/builtins-string.c 2004-06-05 01:50:45 UTC (rev 579)
@@ -83,7 +83,7 @@
len = strlen(str);
obj = NEW_OBJ(OBJ(STRING_PROTO));
if (len < IMMEDIATE_DATA_LEN) {
- obj->data_type = DATA_TYPE_IMMDATA;
+ SET_TYPE_IF_EXC(OBJ(STRING_PROTO), obj, DATA_TYPE_IMMDATA) return NULL;
obj->imm_data_len = (int) len;
strcpy(obj->data.str, str);
} else {
@@ -102,7 +102,7 @@
if(!str) return NULL;
obj = NEW_OBJ(OBJ(STRING_PROTO));
if (len < IMMEDIATE_DATA_LEN) {
- obj->data_type = DATA_TYPE_IMMDATA;
+ SET_TYPE_IF_EXC(OBJ(STRING_PROTO), obj, DATA_TYPE_IMMDATA) return NULL;
obj->imm_data_len = (int) len;
memcpy(obj->data.str, str, len);
obj->data.str[len] = 0;
@@ -201,7 +201,7 @@
MODULE_SET_DOC(String, "string object prototype");
set_obj_id(String_OBJ, *, String);
set_attr(ist, OBJ(OBJECT), sym(ist, "String"), String_OBJ);
- String_OBJ->data_type = DATA_TYPE_IMMDATA;
+ SET_TYPE_IF_EXC(String_OBJ, String_OBJ, DATA_TYPE_IMMDATA) return;
String_OBJ->imm_data_len = 0;
String_OBJ->data.str[0] = 0;
}
@@ -272,7 +272,7 @@
tlen = slen + olen;
obj = NEW_OBJ(String_OBJ);
if (tlen < IMMEDIATE_DATA_LEN) {
- obj->data_type = DATA_TYPE_IMMDATA;
+ SET_TYPE_IF_EXC(String_OBJ, obj, DATA_TYPE_IMMDATA) return NULL;
obj->imm_data_len = (int) tlen;
memcpy(&(obj->data.str[0]), pr_strptr(self), slen);
memcpy(&(obj->data.str[slen]), pr_strptr(other), olen);
@@ -303,13 +303,13 @@
tlen = len*times;
obj = NEW_OBJ(String_OBJ);
if (tlen < IMMEDIATE_DATA_LEN-1) {
- obj->data_type = DATA_TYPE_IMMDATA;
+ SET_TYPE_IF_EXC(String_OBJ, obj, DATA_TYPE_IMMDATA) return NULL;
obj->imm_data_len = (int) tlen;
for(i=0; i < times; i++)
memcpy(obj->data.str+i*len, pr_strptr(self), len);
obj->data.str[tlen] = 0;
} else {
- obj_str = obj_malloc(ist, OBJ(STRING_PROTO), obj, sizeof(pr_str_t)+tlen+1);
+ obj_str = obj_malloc(ist, String_OBJ, obj, sizeof(pr_str_t)+tlen+1);
if(!obj_str) {
raise_exception(ist, OBJ(OUTOFMEMORY_EXC), "memory allocation failed for string multiplication");
return NULL;
@@ -398,7 +398,7 @@
}
obj = NEW_OBJ(String_OBJ);
if (tlen < IMMEDIATE_DATA_LEN) {
- obj->data_type = DATA_TYPE_IMMDATA;
+ SET_TYPE_IF_EXC(String_OBJ, obj, DATA_TYPE_IMMDATA) return NULL;
obj->imm_data_len = (int) tlen;
dest_ptr = obj->data.str;
} else {
@@ -563,7 +563,7 @@
// Create the copy.
obj = NEW_OBJ(String_OBJ);
if (result_len < IMMEDIATE_DATA_LEN-1) {
- obj->data_type = DATA_TYPE_IMMDATA;
+ SET_TYPE_IF_EXC(String_OBJ, obj, DATA_TYPE_IMMDATA) return NULL;
obj->imm_data_len = (int) result_len;
dest_ptr = obj->data.str;
dest_ptr[result_len]=0;
@@ -727,7 +727,7 @@
obj_p gen_obj;
BIN_CONTENT_CHK(String);
gen_obj = NEW_OBJ(StringGen_OBJ);
- gen_obj->data_type = DATA_TYPE_DATAPTR;
+ SET_TYPE_IF_EXC(StringGen_OBJ, gen_obj, DATA_TYPE_DATAPTR) return NULL;
gen_obj->data.ptr = pr_strptr(self);
set_attr(ist, gen_obj, sym(ist, "savedString"), self);
return gen_obj;
Modified: trunk/src/builtins-thread.c
===================================================================
--- trunk/src/builtins-thread.c 2004-06-04 22:39:52 UTC (rev 578)
+++ trunk/src/builtins-thread.c 2004-06-05 01:50:45 UTC (rev 579)
@@ -329,7 +329,7 @@
MODULE_SET_DOC(Mutex, "mutex object prototype");
set_attr(ist, OBJ(OBJECT), sym(ist, "Mutex"), Mutex_OBJ);
- Mutex_OBJ->data_type = DATA_TYPE_DATAPTR;
+ SET_TYPE_IF_EXC(Mutex_OBJ, Mutex_OBJ, DATA_TYPE_DATAPTR) return;
Mutex_OBJ->unclonable = TRUE;
}
Modified: trunk/src/builtins-tuple.c
===================================================================
--- trunk/src/builtins-tuple.c 2004-06-04 22:39:52 UTC (rev 578)
+++ trunk/src/builtins-tuple.c 2004-06-05 01:50:45 UTC (rev 579)
@@ -87,7 +87,7 @@
set_obj_id(Tuple_OBJ, *, Tuple);
set_attr(ist, OBJ(OBJECT), sym(ist, "Tuple"), Tuple_OBJ);
- Tuple_OBJ->data_type = DATA_TYPE_DATAPTR;
+ SET_TYPE_IF_EXC(Tuple_OBJ, Tuple_OBJ, DATA_TYPE_DATAPTR) return;
lstp = Tuple_OBJ->data.ptr = pr_malloc(list_sizeof(2));
lstpsize(lstp) = 2;
lstplen(lstp) = 0;
@@ -310,7 +310,7 @@
DEF(Tuple, iter_, NULL) {
obj_p list_obj, gen_obj = NEW_OBJ(Tgen_OBJ);
BIN_CONTENT_CHK(Tuple);
- gen_obj->data_type = DATA_TYPE_DATAPTR;
+ SET_TYPE_IF_EXC(Tgen_OBJ, gen_obj, DATA_TYPE_DATAPTR) return NULL;
gen_obj->data.ptr = list_obj = copy_list_obj(ist, self);
listlen(list_obj) = 0;
return gen_obj;
Modified: trunk/src/interp.c
===================================================================
--- trunk/src/interp.c 2004-06-04 22:39:52 UTC (rev 578)
+++ trunk/src/interp.c 2004-06-05 01:50:45 UTC (rev 579)
@@ -133,7 +133,7 @@
pr_assert(frame->locals != prev_scope);
set_attr(ist, frame->locals, SYM(PREVSCOPE_), prev_scope);
}
- pr_assert(frame->func_name);
+ //pr_assert(frame->func_name);
return frame;
}
@@ -143,7 +143,7 @@
//********************************* new_local_obj *****************************
obj_p new_local_obj(isp ist, obj_p symbol){
obj_p local_obj = NEW_OBJ(OBJ(LOCAL_PROTO));
- local_obj->data_type = DATA_TYPE_DATAPTR;
+ SET_TYPE_IF_EXC(OBJ(LOCAL_PROTO), local_obj, DATA_TYPE_DATAPTR) return NULL;
local_obj->data.ptr = symbol;
local_obj->immutable = TRUE;
return local_obj;
@@ -153,7 +153,7 @@
obj_p new_super_obj(isp ist, obj_p container, obj_p symbol) {
int i;
obj_p super_obj = NEW_OBJ(OBJ(SUPER_PROTO));
- super_obj->data_type = DATA_TYPE_DATAPTR;
+ SET_TYPE_IF_EXC(OBJ(SUPER_PROTO), super_obj, DATA_TYPE_DATAPTR) return NULL;
super_obj->data.ptr = symbol;
su(i);
set_attr(ist, super_obj, SYM(CONT_), container);
@@ -165,7 +165,7 @@
//********************************* new_outer_obj *****************************
obj_p new_outer_obj(isp ist, obj_p symbol){
obj_p outer_obj = NEW_OBJ(OBJ(OUTER_PROTO));
- outer_obj->data_type = DATA_TYPE_DATAPTR;
+ SET_TYPE_IF_EXC(OBJ(OUTER_PROTO), outer_obj, DATA_TYPE_DATAPTR) return NULL;
outer_obj->data.ptr = symbol;
outer_obj->immutable = TRUE;
return outer_obj;
@@ -1218,7 +1218,7 @@
}
IF_EXC_BREAK;
new_frame = create_frame( ist, self, NULL, frame->locals,
- new_locals, func_obj, NULL, NULL );
+ new_locals, func_obj, NULL, NULL );
fr_next = new_frame;
new_frame->prev_frame = frame;
load_frame_params(ist, new_locals, func_obj, param*2, fr_stack+fr_sp+2);
@@ -1461,7 +1461,7 @@
else {
switch_frame = fp->prev_frame;
switch_frame->next_frame = NULL;
- switch_frame->stack[switch_frame->stack_ptr++] = fr_pop;
+ switch_frame->stack[switch_frame->stack_ptr-1] = fr_pop;
}
} break;
case OP_RETURN:
Modified: trunk/src/object.c
===================================================================
--- trunk/src/object.c 2004-06-04 22:39:52 UTC (rev 578)
+++ trunk/src/object.c 2004-06-05 01:50:45 UTC (rev 579)
@@ -1007,8 +1007,7 @@
obj->imm_data_len = (int) size;
return &obj->data;
} else {
- SET_TYPE_IF_EXC(proto, obj, DATA_TYPE_DATAPTR)
- return NULL;
+ SET_TYPE_IF_EXC(proto, obj, DATA_TYPE_DATAPTR) return NULL;
obj->data.ptr = pr_malloc(size);
return obj->data.ptr;
}
@@ -1054,7 +1053,7 @@
//********************************* new_hash_obj ******************************
obj_p new_hash_obj(isp ist, i32_t num) {
obj_p hash_obj = NEW_OBJ(OBJ(HASH_PROTO));
- hash_obj->data_type = DATA_TYPE_IMMDATA;
+ SET_TYPE_IF_EXC(OBJ(HASH_PROTO), hash_obj, DATA_TYPE_IMMDATA) return NULL;
hash_obj->imm_data_len = 4;
hash_obj->data.i32[0] = num & HASH_MASK;
if (!(hash_obj->data.i32[0])) hash_obj->data.i32[0] = 1;
Modified: trunk/src/parser_routines.c
===================================================================
--- trunk/src/parser_routines.c 2004-06-04 22:39:52 UTC (rev 578)
+++ trunk/src/parser_routines.c 2004-06-05 01:50:45 UTC (rev 579)
@@ -1492,7 +1492,7 @@
obj_p proto = OBJ(STRING_PROTO);
obj_p obj = new_object(IST, proto);
if (len < IMMEDIATE_DATA_LEN) {
- obj->data_type = DATA_TYPE_IMMDATA;
+ obj->data_type = DATA_TYPE_IMMDATA;
obj->imm_data_len = (int) len;
memcpy(obj->data.str, pr_strptr(str), len);
obj->data.str[len] = 0;
Modified: trunk/src/symbol.c
===================================================================
--- trunk/src/symbol.c 2004-06-04 22:39:52 UTC (rev 578)
+++ trunk/src/symbol.c 2004-06-05 01:50:45 UTC (rev 579)
@@ -256,7 +256,7 @@
return sym;
}
sym = NEW_OBJ(OBJ(SYMBOL_PROTO));
- sym->data_type = DATA_TYPE_IMMDATA;
+ SET_TYPE_IF_EXC(OBJ(SYMBOL_PROTO), sym, DATA_TYPE_IMMDATA) return NULL;
sym->imm_data_len = 4;
if (!(next_key = (next_key+3) & 0x7fffffff)) {
printf("Out of unique symbol keys. Did we really use two billion?\n");