From: <cli...@li...> - 2005-01-28 04:49:44
|
Send clisp-cvs mailing list submissions to cli...@li... To subscribe or unsubscribe via the World Wide Web, visit https://lists.sourceforge.net/lists/listinfo/clisp-cvs or, via email, send a message with subject or body 'help' to cli...@li... You can reach the person managing the list at cli...@li... When replying, please edit your Subject line so it is more specific than "Re: Contents of clisp-cvs digest..." CLISP CVS commits for today Today's Topics: 1. clisp/src stream.d,1.501,1.502 ChangeLog,1.4158,1.4159 (Sam Steingold) --__--__-- Message: 1 From: Sam Steingold <sd...@us...> To: cli...@li... Subject: clisp/src stream.d,1.501,1.502 ChangeLog,1.4158,1.4159 Date: Thu, 27 Jan 2005 22:55:15 +0000 Reply-To: cli...@li... Update of /cvsroot/clisp/clisp/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17534/src Modified Files: stream.d ChangeLog Log Message: (check_endianness_arg): renamed from test_endianness_arg() (READ-INTEGER, READ-FLOAT, WRITE-INTEGER, WRITE-FLOAT): call check_endianness_arg() before check_stream() for GC-safety Index: stream.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/stream.d,v retrieving revision 1.501 retrieving revision 1.502 diff -u -d -r1.501 -r1.502 --- stream.d 26 Jan 2005 21:00:43 -0000 1.501 +++ stream.d 27 Jan 2005 22:55:04 -0000 1.502 @@ -16734,11 +16734,13 @@ fehler(error,GETTEXT("~S: illegal ~S argument ~S")); } -# UP: Check an endianness argument. -# test_endianness_arg(arg) -# > arg: the argument -# < bool result: endianness (BIG = true, LITTLE = false) -local bool test_endianness_arg (object arg) { +/* UP: Check an endianness argument. + check_endianness_arg(arg) + > arg: the argument + < bool result: endianness (BIG = true, LITTLE = false) + can trigger GC */ +local bool maygc check_endianness_arg (object arg) { + restart_check_endianness_arg: if (!boundp(arg) || eq(arg,S(Klittle)) || eq(arg,S(Kdefault))) return false; if (eq(arg,S(Kbig))) @@ -16746,7 +16748,9 @@ pushSTACK(arg); # TYPE-ERROR slot DATUM pushSTACK(O(type_endianness)); # TYPE-ERROR slot EXPECTED-TYPE pushSTACK(arg); pushSTACK(TheSubr(subr_self)->name); - fehler(type_error,GETTEXT("~S: illegal endianness argument ~S")); + check_value(type_error,GETTEXT("~S: illegal endianness argument ~S")); + arg = value1; + goto restart_check_endianness_arg; } @@ -16943,13 +16947,12 @@ # (READ-INTEGER stream element-type [endianness [eof-error-p [eof-value]]]) # is a generalized READ-BYTE. LISPFUN(read_integer,seclass_default,2,3,norest,nokey,0,NIL) { - var object stream = check_stream(STACK_4); - # check Element-Type: + /* check Element-Type */ var decoded_el_t eltype; test_eltype_arg(&STACK_3,&eltype); check_multiple8_eltype(&eltype); - # check Endianness: - var bool endianness = test_endianness_arg(STACK_2); + var bool endianness = check_endianness_arg(STACK_2); /* check Endianness */ + var object stream = check_stream(STACK_4); var uintL bitsize = eltype.size; var uintL bytesize = bitsize/8; var DYNAMIC_8BIT_VECTOR(bitbuffer,bytesize); @@ -16996,11 +16999,9 @@ # (READ-FLOAT stream element-type [endianness [eof-error-p [eof-value]]]) # reads a float in IEEE binary representation. LISPFUN(read_float,seclass_default,2,3,norest,nokey,0,NIL) { + var uintL bytesize = check_float_eltype(&STACK_3); /* check Element-Type */ + var bool endianness = check_endianness_arg(STACK_2); /* check Endianness */ var object stream = check_stream(STACK_4); - # check Element-Type: - var uintL bytesize = check_float_eltype(&STACK_3); - # check Endianness: - var bool endianness = test_endianness_arg(STACK_2); var DYNAMIC_8BIT_VECTOR(bitbuffer,bytesize); pushSTACK(bitbuffer); # Stack layout: stream, element-type, endianness, eof-error-p, eof-value, bitbuffer. @@ -17068,13 +17069,12 @@ # (WRITE-INTEGER integer stream element-type [endianness]) # is a generalized WRITE-BYTE. LISPFUN(write_integer,seclass_default,3,1,norest,nokey,0,NIL) { - var object stream = check_stream(STACK_2); - # check Element-Type: + /* check Element-Type */ var decoded_el_t eltype; test_eltype_arg(&STACK_1,&eltype); check_multiple8_eltype(&eltype); - # check Endianness: - var bool endianness = test_endianness_arg(STACK_0); + var bool endianness = check_endianness_arg(STACK_0); /* check Endianness */ + var object stream = check_stream(STACK_2); # check Integer: var uintL bitsize = eltype.size; var uintL bytesize = bitsize/8; @@ -17107,11 +17107,9 @@ # (WRITE-FLOAT float stream element-type [endianness]) # writes a float in IEEE binary representation. LISPFUN(write_float,seclass_default,3,1,norest,nokey,0,NIL) { + var uintL bytesize = check_float_eltype(&STACK_1); /* check Element-Type */ + var bool endianness = check_endianness_arg(STACK_0); /* check Endianness */ var object stream = check_stream(STACK_2); - # check Element-Type: - var uintL bytesize = check_float_eltype(&STACK_1); - # check Endianness: - var bool endianness = test_endianness_arg(STACK_0); # check Float: var object obj = STACK_3; switch (bytesize) { Index: ChangeLog =================================================================== RCS file: /cvsroot/clisp/clisp/src/ChangeLog,v retrieving revision 1.4158 retrieving revision 1.4159 diff -u -d -r1.4158 -r1.4159 --- ChangeLog 26 Jan 2005 21:01:16 -0000 1.4158 +++ ChangeLog 27 Jan 2005 22:55:11 -0000 1.4159 @@ -1,3 +1,9 @@ +2005-01-27 Sam Steingold <sd...@gn...> + + * stream.d (check_endianness_arg): renamed from test_endianness_arg() + (READ-INTEGER, READ-FLOAT, WRITE-INTEGER, WRITE-FLOAT): call + check_endianness_arg() before check_stream() for GC-safety + 2005-01-26 Sam Steingold <sd...@gn...> * stream.d (same_handle_p): added debugging infrastructure --__--__-- _______________________________________________ clisp-cvs mailing list cli...@li... https://lists.sourceforge.net/lists/listinfo/clisp-cvs End of clisp-cvs Digest |