* 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 ;; snip-class
;; ;;
(define cache-image-snip-class% (define cache-image-snip-class%
(class snip-class% (class snip-class%
(define/override (read f) (define/override (read f)
(let ([data (read-from-string (bytes->string/utf-8 (send f get-bytes)) (let ([data (read-from-string (send f get-bytes) (lambda () #f))])
void
(lambda (x) #f))])
(if data (if data
(argb->cache-image-snip (make-argb (first data) (second data)) (argb->cache-image-snip (make-argb (first data) (second data))
(third data) (third data)
(fourth data)) (fourth data))
(make-null-cache-image-snip)))) (make-null-cache-image-snip))))
(super-new))) (super-new)))
(define snip-class (new cache-image-snip-class%)) (define snip-class (new cache-image-snip-class%))
(send snip-class set-version 1) (send snip-class set-version 1)
(send snip-class set-classname (format "~s" `(lib "cache-image-snip.ss" "mrlib"))) (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?)] [argb? (any/c . -> . boolean?)]
[make-argb ((vectorof (integer-in 0 255)) integer? . -> . argb?)] [make-argb ((vectorof (integer-in 0 255)) integer? . -> . argb?)]
[argb-vector (argb? . -> . (vectorof (integer-in 0 255)))] [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% (define syntax-snipclass%
(class snip-class% (class snip-class%
(define/override (read stream) (define/override (read stream)
(let ([str (send stream get-bytes)]) (make-object syntax-snip%
(make-object syntax-snip% (unmarshall-syntax (read-from-string (bytes->string/utf-8 str)))))) (unmarshall-syntax (read-from-string (send stream get-bytes)))))
(super-instantiate ()))) (super-instantiate ())))
(define snip-class (make-object syntax-snipclass%)) (define snip-class (make-object syntax-snipclass%))