changeset 30:9e43cec05dc5

fix redit-unpack-int()
author gongo
date Sun, 11 Nov 2007 03:02:50 +0900
parents ba1829a0c788
children ccd1ad69a852
files ChangeLog redit-client-sm.el
diffstat 2 files changed, 13 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sun Nov 11 01:44:56 2007 +0900
+++ b/ChangeLog	Sun Nov 11 03:02:50 2007 +0900
@@ -1,5 +1,8 @@
 2007-11-11  Wataru MIYAGUNI  <gongo@cr.ie.u-ryukyu.ac.jp>
 
+	* redit-client-sm.el: redit-unpack-int
+	256 以上を取得できなかったのを修正。4バイトぐらい。
+
 	* redit-client-sm.el: redit-*-command
 	REPcommand では 「insert」 なのに
 	ここでは 「write」 なので、時々混乱する。insert に変更。
--- a/redit-client-sm.el	Sun Nov 11 01:44:56 2007 +0900
+++ b/redit-client-sm.el	Sun Nov 11 03:02:50 2007 +0900
@@ -113,10 +113,16 @@
    (redit-pack-int cmd) (redit-pack-int sid) (redit-pack-int eid)
    (redit-pack-int seq) (redit-pack-int lno) (redit-pack-int siz)))
 
-(defun redit-unpack-int (pkt byte)
-  (let (num)
-    (setq num (* byte 4))
-    (string-to-char (substring pkt (- num 1) num))))
+(defun redit-unpack-int-loop (pkt pos count)
+  (if (> count 1)
+      (+
+       (* (redit-unpack-int-loop pkt (- pos 1) (- count 1)) 256)
+       (string-to-char (substring pkt (- pos 1) pos)))
+    0
+    ))
+
+(defun redit-unpack-int (pkt pos)
+  (redit-unpack-int-loop pkt (* pos 4) 4))
 
 
 ;; これ使ってる?