commit 839c052a938f78fde18b9b2431c24c6163e4a7f3
parent b567422f98b815a45fa8e7144057a8834e98616b
Author: Russ Cox <rsc@swtch.com>
Date: Sun, 2 Jan 2011 16:01:05 -0500
acid: 4-byte Runes
R=rsc
http://codereview.appspot.com/3860041
Diffstat:
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/src/cmd/acid/exec.c b/src/cmd/acid/exec.c
@@ -205,7 +205,7 @@ convflt(Node *r, char *flt)
void
indir(Map *m, ulong addr, char fmt, Node *r)
{
- int i;
+ int i, j, k;
u32int ival;
u64int vval;
int ret;
@@ -280,16 +280,19 @@ indir(Map *m, ulong addr, char fmt, Node *r)
break;
case 'R':
r->type = TSTRING;
- for(i = 0; i < sizeof(buf)-2; i += 2) {
- ret = get1(m, addr, (uchar*)&buf[i], 2);
+ assert(sizeof(Rune) == 4);
+ for(i = 0; i < sizeof(buf)-4; i += 4) {
+ ret = get4(m, addr, &ival);
if (ret < 0)
error("indir: %r");
- addr += 2;
- if(buf[i] == 0 && buf[i+1] == 0)
+ rval = ival;
+ memmove(buf+i, &ival, 4);
+ addr += 4;
+ if(ival == 0)
break;
}
- buf[i++] = 0;
- buf[i] = 0;
+ ival = 0;
+ memmove(buf+i, &ival, 4);
r->store.u.string = runenode((Rune*)buf);
break;
case 'i':