Re: bugs in C::SOURCE-LOCATION and string reversal
Raymond Toy <[email protected]> Mon, 13 May 2013 19:18:05 -0700
| Newsgroups | gmane.lisp.cmucl.general |
|---|---|
| Message-ID | <[email protected]> |
>>>>> "Matt" == Matt Kaufmann <[email protected]> writes: Matt> Hi -- Matt> I downloaded the 2013-05 snapshot from Matt> http://trac.common-lisp.net/cmucl Matt> (http://common-lisp.net/project/cmucl/downloads/snapshots/2013/05/cmucl-2013-05-x86-linux.tar.bz2), Matt> and I am running into two bugs, discussed below. The first is kind of Matt> a show-stopper. It's hit me before using CMUCL 19e (so I guess it's Matt> been around awhile), but at that time I was able to avoid it simply by Matt> not running my application in a particular "mode". I'd appreciate any Matt> suggestions for easily working around that first bug. I've worked Matt> around the second bug, but I thought I should report it, and I do so Matt> at the end, below. First, sorry for the trouble you're having. And thank you for reporting it. If you don't report it, it can't be fixed. Matt> The first bug pertains to C::SOURCE-LOCATION. Below is part of the Matt> log, showing three errors during compilation followed by a break Matt> during load of the resulting compiled file. Hmm. There have been some issues with source-location, but I thought they were fixed recently. Apparently not. Can I reproduce this by downloading and installing acl2? A short example file instead would be better, but sometimes that's not so easy to do. Matt> I tried a workaround or two with the sort of approach I used below for Matt> the second error; but that didn't help. Also, I don't care about Matt> source location information, but I didn't see a way simply to turn it Matt> off (as I do when compiling with CCL). You never care to look at backtraces and see the offending source? I find that invaluable. I don't know of any way to turn off source-location information unfortunately. Matt> The second bug is in computing (reverse ""), as shown below. Ouch. This is probably due to a recent change in handling of strings. For this particular issue, you can solve it with this: (in-package "LISP") (defmacro with-string (string &rest forms) `(let ((,string (if (stringp ,string) ,string (string ,string)))) (with-array-data ((,string ,string) (start) (end (length (the vector ,string)))) ,@forms))) (defun string-reverse* (sequence) (declare (optimize (speed 3) (space 0) (safety 0)) (type string sequence)) (with-string sequence (let* ((length (- end start)) (string (make-string length)) (j length)) (declare (type kernel:index length j)) (when (plusp length) (loop for i = start then n as n = (%glyph-f sequence i) do (replace string sequence :start1 (decf j (- n i)) :start2 i :end2 n) while (< n end))) string))) Ray _______________________________________________ cmucl-help mailing list [email protected] http://lists.zs64.net/mailman/listinfo/cmucl-help