From: Sam S. <sd...@gn...> - 2000-06-26 19:42:55
|
It appears the the result of (READ stream) can be a read-only string on linux (make system in clocc/src/cllib gives the error "Attempt to modify a read-only string"). Is this true? Is this a bug? -- Sam Steingold (http://www.podval.org/~sds) Micros**t is not the answer. Micros**t is a question, and the answer is Linux, (http://www.linux.org) the choice of the GNU (http://www.gnu.org) generation. MS: our tomorrow's software will run on your tomorrow's HW at today's speed. |
From: Bruno H. <ha...@il...> - 2000-06-28 16:07:34
|
Sam writes: > It appears the the result of (READ stream) can be a read-only string on > linux (make system in clocc/src/cllib gives the error "Attempt to modify > a read-only string"). > Is this true? > Is this a bug? Congratulations, you found a bug in CLOCC. Read-only strings in CLISP are currently 1. Symbol names (I hope the bug is not in this category!), 2. Literal strings read from program source files. Quoting HyperSpec/Body/speope_quote.html: "The consequences are undefined if literal objects (including quoted objects) are destructively modified." Bruno |
From: Sam S. <sd...@gn...> - 2000-06-28 16:27:25
|
Bruno Haible wrote: > > Sam writes: > > It appears the the result of (READ stream) can be a read-only string on > > linux (make system in clocc/src/cllib gives the error "Attempt to modify > > a read-only string"). > > Is this true? > > Is this a bug? > > Congratulations, you found a bug in CLOCC. Read-only strings in CLISP > are currently > 1. Symbol names (I hope the bug is not in this category!), > 2. Literal strings read from program source files. > Quoting HyperSpec/Body/speope_quote.html: > "The consequences are undefined if literal objects (including > quoted objects) are destructively modified." Are you saying that this is illegal? [1]> (read-from-string "\"a\"") "a" ; 3 [2]> (setf (char * 0) #\b) #\b [3]> ** "b" [4]> |
From: Bruno H. <ha...@il...> - 2000-06-28 16:48:07
|
Sam writes: > Are you saying that this is illegal? > > [1]> (read-from-string "\"a\"") > "a" ; > 3 > [2]> (setf (char * 0) #\b) > #\b No. read-from-string doesn't assume a valid Common Lisp _program_source_. But if you have a program containing (defvar s "a") and LOAD it, then (setf (char s 0) #\b) will be invalid. Bruno |
From: Sam S. <sd...@gn...> - 2000-06-28 18:43:08
|
Bruno Haible wrote: > > No. read-from-string doesn't assume a valid Common Lisp > _program_source_. But if you have a program containing > > (defvar s "a") > > and LOAD it, then (setf (char s 0) #\b) will be invalid. this is not my case. I get the error with a string read from a file, with READ. if you have a linux box handy, you can easily reproduce the error. |
From: Bruno H. <ha...@il...> - 2000-06-28 19:12:03
|
Sam writes: > I get the error with a string read from a file, with READ. > > if you have a linux box handy, you can easily reproduce the error. Please provide a sample I can reproduce. As I can see, clisp behaves correctly. $ cat > a "a" $ clisp --version CLISP 2000-03-06 (März 2000) $ clisp -q > (setq s (open "a")) #<BUFFERED FILE-STREAM CHARACTER #P"a" @1> > (read s) "a" > (setf (char * 0) #\b) #\b > ** "b" Bruno |
From: Sam S. <sd...@gn...> - 2000-08-07 20:07:17
|
> * In message <146...@ho...> > * On the subject of "Re: (read stream) => RO string?" > * Sent on Wed, 28 Jun 2000 21:05:12 +0200 (CEST) > * Honorable Bruno Haible <ha...@il...> writes: > > Sam writes: > > I get the error with a string read from a file, with READ. > > Please provide a sample I can reproduce. Unfortunately this problem is not easily reproducible. The reason I am returning to this is that I just got the same error on Solaris (with the current CVS CLISP). The only way I can (sometimes) reproduce it is in cllib/xml.lisp: (xml-read-from-file (translate-logical-pathname "clocc:etc;cl-ent.xml") :reset-ent nil) I get an error on the first line with an ' in the entity definition <!ENTITY cl "...'..'."> in function `xml-read-entity', `nsubstitute' funcall. -- Sam Steingold (http://www.podval.org/~sds) Micros**t is not the answer. Micros**t is a question, and the answer is Linux, (http://www.linux.org) the choice of the GNU (http://www.gnu.org) generation. Computer are like air conditioners: they don't work with open windows! |