Skip to content
Snippets Groups Projects
  1. Dec 01, 2003
  2. Nov 25, 2003
  3. Nov 24, 2003
  4. Nov 21, 2003
  5. Nov 12, 2003
    • toy's avatar
      If we can't open /dev/urandom and read the desired number of words, · 8f50683d
      toy authored
      silently revert to initializing to the random state from the current
      time.
      
      From Ole Rohne via cmucl-imp.  This works around a problem on one of
      his machines where /dev/urandom isn't what we think it is.  We still
      lose if /dev/urandom returns words that aren't random enough.  Oh
      well.
      8f50683d
  6. Nov 08, 2003
    • gerd's avatar
      (in-package :cl-user) · 097ec481
      gerd authored
      	(require :gray-streams)
      
      	(defclass my-in-stream (ext:fundamental-character-input-stream)
      	  ((last-char :initarg :last-char)))
      
      	(let ((string " a ")
      	      (i 0))
      	  (defmethod ext:stream-read-char ((s my-in-stream))
      	    (with-input-from-string (s "b") (read s))
      	    (with-slots (last-char) s
      	      (cond (last-char (prog1 last-char (setf last-char nil)))
      		     (t (prog1 (aref string i)
      			  (setq i (mod (1+ i) (length string)))))))))
      
      	(defmethod ext:stream-unread-char ((s my-in-stream) char)
      	  (setf (slot-value s 'last-char) char)
      	  nil)
      
      	(setq x (make-instance 'my-in-stream :last-char nil))
      	(read x)
      	 => b, instead of a
      
      	* src/code/reader.lisp: Use a new read buffer for each call to
      	read or read-preserving-whitespace, instead of using one global
      	buffer.  From Helmut Eller.
      097ec481
  7. Nov 05, 2003
  8. Nov 03, 2003
    • gerd's avatar
      (with-open-file (stream "test.123" :direction :output · b10e98ff
      gerd authored
      	                        :if-exists :supersede)
      	  (format stream "~S ~S ~S~%" 'these 'are 'symbols))
      
      	(with-open-file (stream "test.123" :direction :io
      	                        :if-exists :overwrite)
      	  (read stream) (prin1 'insert stream))
      
      	(with-open-file (stream "test.123")
      	  (loop for line = (read-line stream nil)
      	        until (null line) do (write-line line)))
      
      	Output should be "these insertmbols"
      	Output is "these are symbols\ninsert"
      
      	* src/code/fd-stream.lisp (def-output-routines): If there is any
      	input read from UNIX but not supplied to the user of the stream,
      	reposition to the real file position as seen from Lisp.
      	Reported by Adam Warner.
      b10e98ff
  9. Oct 26, 2003
  10. Oct 24, 2003
    • toy's avatar
      READ-SEQUENCE was returning too soon: · 5b428a0a
      toy authored
      (defvar *s* (open "target:code/scavhook.lisp"))
      (defvar *buf* (make-array 5000 :element-type 'character))
      (read-sequence *buf* *s* :end 3000) => 3000
      (read-sequence *buf* *s* :end 3000) => 1096
      
      or 4096 bytes read, when we should have read 4139 (length of
      scavhook.lisp).
      
      Make READ-INTO-SIMPLE-STRING keep trying to READ-N-BYTES until we have
      enough bytes or until READ-N-BYTES returns 0 bytes read (in which
      case we return a short read because there's nothing left to read).
      5b428a0a
    • toy's avatar
      Add support for catching heap overflows, similar to the control stack · 3e309c44
      toy authored
      overflow checking.  Enable with :heap-overflow-check.  We reserve some
      number of pages on the heap.  When the heap reaches the reserved
      pages, an overflow warning is signalled.  The reserved pages are set
      0.  This allows some additional allocation to happen during debugging,
      if necessary.  If another overflow happens, we throw to top-level.
      
      Sparc only right now.
      
      	* lisp/sparc-assem.S (_do_dynamic_space_overflow_error): New
      	function to handle a heap overflow error.
      	(_do_dynamic_space_overflow_warning): New function to handle heap
      	overflow warning.
      
      	* lisp/sparc-arch.c (sigill_handler): Handle the two new traps
      	caused by heap overflows.
      
      	* lisp/interrupt.c (interrupt_handle_space_overflow): New function
      	to handle interrupt caused by heap space overflows.
      
      	* lisp/gencgc.c (handle_heap_overflow): New function to handle
      	heap overflows.
      	(gc_alloc_new_region): Use handle_heap_overflow.
      	(gc_alloc_large): Use handle_heap_overflow
      
      	* compiler/sparc/parms.lisp (static-symbols): Add new static
      	symbols for heap overflow checking:
      	dynamic-space-overflow-error-hit and
      	dynamic-space-overflow-warning-hit.
      
      	* compiler/generic/new-genesis.lisp (finish-symbols): Initialize
      	the new dynamic-space-overflow-error-hit and
      	dynamic-space-overflow-warning-hit static symbols.
      
      	* code/lispinit.lisp (:heap-overflow-check): Add
      	heap-overflow-check to *runtime-features*, if necessary.
      	("reserved_heap_pages"): Access to alien variable for heap
      	overflow.
      	(*reserved-heap-pages*): Default number of heap pages to reserve
      	for heap overflow.
      	(%top-level): Set reserved-heap-pages to the default.
      
      	* code/interr.lisp (dynamic-space-overflow-warning-hit): Add
      	function to handle heap overflow warnings.
      	(dynamic-space-overflow-error-hit): Add function to handle heap
      	overflow error.
      
      	* code/error.lisp (heap-overflow): Add new condition type for heap
      	overflow
      3e309c44
  11. Oct 15, 2003
  12. Oct 09, 2003
  13. Oct 05, 2003
    • gerd's avatar
      Improve interrupt safety. · a7ed2dae
      gerd authored
      	* src/compiler/globaldb.lisp (get-info-value):
      	* src/code/extensions.lisp (define-hash-cache): Use
      	without-interrupts.
      a7ed2dae
  14. Sep 25, 2003
  15. Sep 12, 2003
  16. Sep 09, 2003
  17. Sep 08, 2003
  18. Sep 05, 2003
  19. Sep 04, 2003
  20. Sep 02, 2003
  21. Aug 31, 2003
  22. Aug 29, 2003
  23. Aug 28, 2003
    • gerd's avatar
      (loop for i in '(4 8 9 a 13) · dba261e1
      gerd authored
      	      when (eq i 'a) return :good
      	      while (< i 12) collect i)
      
      	signaling a type-error because the while is done before the when.
      	Found by Paul Dietz.
      
      	* src/code/loop.lisp (loop-do-if): Move the call to loop-pseudo-body
      	outside of the binding of *loop-inside-conditional*.
      dba261e1
  24. Aug 27, 2003
Loading