cleanup reading from interface, when argArrayLength returned by buffer2array

is 0, we weren't dealing with this well at all!

git-svn-id: https://svn.musicpd.org/mpd/trunk@559 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
Warren Dukes 2004-03-31 16:15:09 +00:00
parent 9e382536dc
commit f641d046fa
2 changed files with 19 additions and 3 deletions

View File

@ -61,6 +61,12 @@ int buffer2array(char * origBuffer, char *** array) {
} }
markArray[bufferLength] = '\0'; markArray[bufferLength] = '\0';
if(!count) {
free(buffer);
free(markArray);
return count;
}
beginArray = malloc(sizeof(int)*count); beginArray = malloc(sizeof(int)*count);
(*array) = malloc(sizeof(char *)*count); (*array) = malloc(sizeof(char *)*count);
@ -107,6 +113,8 @@ int buffer2array(char * origBuffer, char *** array) {
void freeArgArray(char ** array, int argArrayLength) { void freeArgArray(char ** array, int argArrayLength) {
int i; int i;
if(argArrayLength==0) return;
for(i=0;i<argArrayLength;i++) { for(i=0;i<argArrayLength;i++) {
free(array[i]); free(array[i]);
} }

View File

@ -229,7 +229,8 @@ int interfaceReadInput(Interface * interface) {
argArrayLength = buffer2array(interface->buffer,&argArray); argArrayLength = buffer2array(interface->buffer,&argArray);
if(interface->commandList) { if(interface->commandList) {
if(strcmp(argArray[0],INTERFACE_LIST_MODE_END)==0) { if(argArrayLength==0);
else if(strcmp(argArray[0],INTERFACE_LIST_MODE_END)==0) {
ListNode * node = interface->commandList->firstNode; ListNode * node = interface->commandList->firstNode;
ret = 0; ret = 0;
@ -273,14 +274,21 @@ int interfaceReadInput(Interface * interface) {
} }
} }
else { else {
if(strcmp(argArray[0],INTERFACE_LIST_MODE_BEGIN)==0) { if(argArrayLength &&
strcmp(argArray[0],
INTERFACE_LIST_MODE_BEGIN)==0)
{
interface->commandList = makeList(free); interface->commandList = makeList(free);
interface->commandListSize = interface->commandListSize =
sizeof(List); sizeof(List);
ret = 1; ret = 1;
} }
else { else {
if(strcmp(argArray[0],INTERFACE_LIST_MODE_END)==0) { if(argArrayLength==0) ret = 0;
else if(strcmp(argArray[0],
INTERFACE_LIST_MODE_END)
==0)
{
myfprintf(interface->fp,"%s not in command list mode\n",COMMAND_RESPOND_ERROR); myfprintf(interface->fp,"%s not in command list mode\n",COMMAND_RESPOND_ERROR);
ret = -1; ret = -1;
} }