Revision: 6084
Author: iratqq
Date: Sat Nov 21 05:52:47 2009
Log: * scm/cannav3-socket.scm (canna-lib-resize-pause):
- Fix parsing of return s16 vector.
http://code.google.com/p/uim/source/detail?r=6084
Modified:
/trunk/scm/cannav3-socket.scm
=======================================
--- /trunk/scm/cannav3-socket.scm Fri Nov 20 03:18:55 2009
+++ /trunk/scm/cannav3-socket.scm Sat Nov 21 05:52:47 2009
@@ -211,14 +211,18 @@
0
6
context-id bunsetsu-pos yomi-length)))
- (call-with-u8list-unpack
- '(u16 u16 u16) (string-buf->u8list (file-read socket 6))
- (lambda (dummy len bunsetsu)
- (and (not (= bunsetsu 65535))
- (call-with-u8list-unpack
- (make-list bunsetsu 's16) (string-buf->u8list (file-read socket
len))
- (lambda conv
- (take conv (- bunsetsu bunsetsu-pos))))))))
+ (let ((read-vec (file-read socket 6)))
+ (call-with-u8list-unpack
+ '(u16 u16 u16) (string-buf->u8list read-vec)
+ (lambda (dummy len bunsetsu)
+ (and (not (= bunsetsu 65535))
+ (let loop ((s16list (string-buf->u8list (file-read socket
len)))
+ (rest '()))
+ (if (equal? s16list '(0 0))
+ (reverse rest)
+ (let ((s16 (u8list-unpack '(s16) s16list)))
+ (loop (drop s16list (+ 2 (string-length (car s16))))
+ (cons (car s16) rest))))))))))
;;
;; RK compatible functions