* Better dealing with errors in eval-string and read-from-string/-all

* Made them work with byte strings too
* Added tests to the above

svn: r5081

original commit: a772fa8c8407386a2279c4d6ea2d6294de7c83c0
This commit is contained in:
Eli Barzilay 2006-12-11 18:03:33 +00:00
parent 6032d24e71
commit d17918a616
2 changed files with 10 additions and 12 deletions

View File

@ -139,20 +139,18 @@
;;
;; snip-class
;;
(define cache-image-snip-class%
(class snip-class%
(define/override (read f)
(let ([data (read-from-string (bytes->string/utf-8 (send f get-bytes))
void
(lambda (x) #f))])
(let ([data (read-from-string (send f get-bytes) (lambda () #f))])
(if data
(argb->cache-image-snip (make-argb (first data) (second data))
(third data)
(fourth data))
(make-null-cache-image-snip))))
(argb->cache-image-snip (make-argb (first data) (second data))
(third data)
(fourth data))
(make-null-cache-image-snip))))
(super-new)))
(define snip-class (new cache-image-snip-class%))
(send snip-class set-version 1)
(send snip-class set-classname (format "~s" `(lib "cache-image-snip.ss" "mrlib")))
@ -655,4 +653,4 @@ for b3, we have:
[argb? (any/c . -> . boolean?)]
[make-argb ((vectorof (integer-in 0 255)) integer? . -> . argb?)]
[argb-vector (argb? . -> . (vectorof (integer-in 0 255)))]
[argb-width (argb? . -> . integer?)]))
[argb-width (argb? . -> . integer?)]))

View File

@ -36,8 +36,8 @@ needed to really make this work:
(define syntax-snipclass%
(class snip-class%
(define/override (read stream)
(let ([str (send stream get-bytes)])
(make-object syntax-snip% (unmarshall-syntax (read-from-string (bytes->string/utf-8 str))))))
(make-object syntax-snip%
(unmarshall-syntax (read-from-string (send stream get-bytes)))))
(super-instantiate ())))
(define snip-class (make-object syntax-snipclass%))