Skip to content

Commit 89c8d2c

Browse files
committed
[Qt] Console: allow empty arguments
1 parent 76fcd9d commit 89c8d2c

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

src/qt/rpcconsole.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ bool RPCConsole::RPCExecuteCommandLine(std::string &strResult, const std::string
137137
enum CmdParseState
138138
{
139139
STATE_EATING_SPACES,
140+
STATE_EATING_SPACES_IN_ARG,
140141
STATE_ARGUMENT,
141142
STATE_SINGLEQUOTED,
142143
STATE_DOUBLEQUOTED,
@@ -220,6 +221,7 @@ bool RPCConsole::RPCExecuteCommandLine(std::string &strResult, const std::string
220221
break;
221222
}
222223
case STATE_ARGUMENT: // In or after argument
224+
case STATE_EATING_SPACES_IN_ARG:
223225
case STATE_EATING_SPACES: // Handle runs of whitespace
224226
switch(ch)
225227
{
@@ -231,13 +233,12 @@ bool RPCConsole::RPCExecuteCommandLine(std::string &strResult, const std::string
231233
{
232234
if (ch == '(' && stack.size() && stack.back().size() > 0)
233235
stack.push_back(std::vector<std::string>());
234-
if (curarg.size())
235-
{
236-
// don't allow commands after executed commands on baselevel
237-
if (!stack.size())
238-
throw std::runtime_error("Invalid Syntax");
239-
stack.back().push_back(curarg);
240-
}
236+
237+
// don't allow commands after executed commands on baselevel
238+
if (!stack.size())
239+
throw std::runtime_error("Invalid Syntax");
240+
241+
stack.back().push_back(curarg);
241242
curarg.clear();
242243
state = STATE_EATING_SPACES;
243244
}
@@ -256,13 +257,12 @@ bool RPCConsole::RPCExecuteCommandLine(std::string &strResult, const std::string
256257
}
257258
break;
258259
case ' ': case ',': case '\t':
259-
if(state == STATE_ARGUMENT) // Space ends argument
260+
if(state == STATE_ARGUMENT || (state == STATE_EATING_SPACES_IN_ARG && ch == ',')) // Space ends argument
260261
{
261-
if (curarg.size())
262-
stack.back().push_back(curarg);
262+
stack.back().push_back(curarg);
263263
curarg.clear();
264264
}
265-
state = STATE_EATING_SPACES;
265+
state = (ch == ',' ? STATE_EATING_SPACES_IN_ARG : STATE_EATING_SPACES);
266266
break;
267267
default: curarg += ch; state = STATE_ARGUMENT;
268268
}

0 commit comments

Comments
 (0)