From f641d046fa8053a715fdfe70b570156ac4b6a953 Mon Sep 17 00:00:00 2001 From: Warren Dukes Date: Wed, 31 Mar 2004 16:15:09 +0000 Subject: [PATCH] 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 --- src/buffer2array.c | 8 ++++++++ src/interface.c | 14 +++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/buffer2array.c b/src/buffer2array.c index 40247bde7..9ee67f17c 100644 --- a/src/buffer2array.c +++ b/src/buffer2array.c @@ -61,6 +61,12 @@ int buffer2array(char * origBuffer, char *** array) { } markArray[bufferLength] = '\0'; + if(!count) { + free(buffer); + free(markArray); + return count; + } + beginArray = malloc(sizeof(int)*count); (*array) = malloc(sizeof(char *)*count); @@ -107,6 +113,8 @@ int buffer2array(char * origBuffer, char *** array) { void freeArgArray(char ** array, int argArrayLength) { int i; + if(argArrayLength==0) return; + for(i=0;ibuffer,&argArray); 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; ret = 0; @@ -273,14 +274,21 @@ int interfaceReadInput(Interface * interface) { } } 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->commandListSize = sizeof(List); ret = 1; } 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); ret = -1; }