projects
/
fw
/
sdcc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix of cl_cmdline::syntax_match
[fw/sdcc]
/
sim
/
ucsim
/
cmd.src
/
command.cc
diff --git
a/sim/ucsim/cmd.src/command.cc
b/sim/ucsim/cmd.src/command.cc
index 87ce4568c818ac18f9dd098d6d038e207fb8c0f9..e58a225118a3a6ed9476154613b3ff84cd53b54e 100644
(file)
--- a/
sim/ucsim/cmd.src/command.cc
+++ b/
sim/ucsim/cmd.src/command.cc
@@
-363,6
+363,7
@@
cl_cmdline::syntax_match(class cl_uc *uc, char *syntax)
char *p= syntax;
int iparam= 0;
class cl_cmd_arg *parm= (class cl_cmd_arg *)(params->at(iparam));
char *p= syntax;
int iparam= 0;
class cl_cmd_arg *parm= (class cl_cmd_arg *)(params->at(iparam));
+ bool match;
while (*p &&
parm)
{
while (*p &&
parm)
{
@@
-371,19
+372,25
@@
cl_cmdline::syntax_match(class cl_uc *uc, char *syntax)
switch (*p)
{
case SY_ADDR:
switch (*p)
{
case SY_ADDR:
- if (!uc || !parm->as_address(uc))
- return(DD_FALSE);
+ match= parm->as_address(uc);
+ if (!match)
+ return(match);
//printf("ADDRESS match %lx\n",parm->value.address);
break;
case SY_MEMORY:
//printf("ADDRESS match %lx\n",parm->value.address);
break;
case SY_MEMORY:
- if (!uc || !parm->as_memory(uc))
+ match= parm->as_memory(uc);
+ if (!match)
return(DD_FALSE);
//printf("MEMORY match %s\n",parm->value.memory->class_name);
break;
case SY_BIT:
return(DD_FALSE);
//printf("MEMORY match %s\n",parm->value.memory->class_name);
break;
case SY_BIT:
- if (!
uc || !
parm->as_bit(uc))
+ if (!parm->as_bit(uc))
return(DD_FALSE);
break;
return(DD_FALSE);
break;
+ }
+ switch (*p)
+ {
+ case SY_ADDR: case SY_MEMORY: case SY_BIT: break;
case SY_NUMBER:
if (!parm->as_number())
return(DD_FALSE);
case SY_NUMBER:
if (!parm->as_number())
return(DD_FALSE);