db: fix unicode support (thanks giacomo)

from the unicode-db patch readme:

command() receives a char* that is assigned to lp, which is a Rune*,
and lp is incremented later in readchar(), so each read consumed 4 bytes.
The only time command() is called is in runpcs() with bkpt->comm,
which is a char* built in subpcs through a char*, so the string stored in
bkpt->comm was not a Rune string. A way to test the bug is:

db program
main:b argv/X
:r
This commit is contained in:
cinap_lenrek 2015-03-19 11:44:26 +01:00
parent 4d0343c9d2
commit c86561f625
5 changed files with 7 additions and 7 deletions

View file

@ -23,8 +23,8 @@ WORD adrval, cntval, loopcnt;
int adrflg, cntflg;
/* command decoding */
command(char *buf, int defcom)
int
command(Rune *buf, int defcom)
{
char *reg;
char savc;
@ -39,7 +39,7 @@ command(char *buf, int defcom)
if (*buf==EOR)
return(FALSE);
clrinp();
lp=(Rune*)buf;
lp=buf;
}
do {
adrflg=expr(0); /* first address */

View file

@ -64,7 +64,7 @@ struct bkpt {
int count;
int initcnt;
int flag;
char comm[MAXCOM];
Rune comm[MAXCOM];
BKPT *nxtbkpt;
};

View file

@ -8,7 +8,7 @@ void clrinp(void);
void cmdmap(Map*);
void cmdsrc(int, Map*);
void cmdwrite(int, Map*);
int command(char*, int);
int command(Rune*, int);
int convdig(int);
void ctrace(int);
WORD defval(WORD);

View file

@ -20,7 +20,7 @@ subpcs(int modif)
int n, r;
long line, curr;
BKPT *bk;
char *comptr;
Rune *comptr;
runmode=SINGLE;
r = 0;

View file

@ -166,7 +166,7 @@ printtrace(int modif)
dprint(buf);
if (bk->count != 1)
dprint(",%d", bk->count);
dprint(":%c %s", bk->flag == BKPTTMP ? 'B' : 'b', bk->comm);
dprint(":%c %S", bk->flag == BKPTTMP ? 'B' : 'b', bk->comm);
}
break;