diff options
-rw-r--r-- | src/ivy.c | 6 | ||||
-rw-r--r-- | src/ivybind.c | 3 |
2 files changed, 7 insertions, 2 deletions
@@ -1560,6 +1560,7 @@ static void addRegexpToDictionary (const char* regexp, IvyClientPtr client) { MsgSndDictPtr msgSendDict = NULL; RWIvyClientPtr newClient = NULL; + static char errorbuffer[1024]; /* on cherche si une entrée existe deja pour cette regexp source */ HASH_FIND_STR(messSndByRegexp, regexp, msgSendDict); /* l'entree n'existe pas dans le dictionnaire : on la cree */ @@ -1572,8 +1573,9 @@ static void addRegexpToDictionary (const char* regexp, IvyClientPtr client) msgSendDict->binding = IvyBindingCompile(regexp, & erroffset, & errbuf ); if (msgSendDict->binding == NULL ) { - printf("Error compiling '%s', %s\n", regexp, errbuf); - MsgSendTo(client, Error, erroffset, errbuf ); + sprintf( errorbuffer, "Error compiling '%s', %s", regexp, errbuf); + printf("%s\n", errorbuffer); + MsgSendTo(client, Error, erroffset, errorbuffer ); } msgSendDict->clientList = NULL; diff --git a/src/ivybind.c b/src/ivybind.c index 1886d03..d433d1a 100644 --- a/src/ivybind.c +++ b/src/ivybind.c @@ -140,6 +140,7 @@ void IvyBindingFree( IvyBinding bind ) /* if ((called %1000) == 0) { */ /* printf ("DBG> IvyBindingFree called =%d\n", called); */ /* } */ + if( bind == NULL ) return; #ifdef USE_PCRE_REGEX if ( bind->ovector != NULL ) free( bind->ovector ); @@ -157,6 +158,7 @@ void IvyBindingFree( IvyBinding bind ) int IvyBindingExec( IvyBinding bind, const char * message ) { int nb_match = 0; + if( bind == NULL ) return nb_match; #ifdef USE_PCRE_REGEX nb_match = pcre_exec( @@ -189,6 +191,7 @@ int IvyBindingExec( IvyBinding bind, const char * message ) void IvyBindingMatch( IvyBinding bind, const char *message, int argnum, int *arglen, const char **arg) { + if( bind == NULL ) return; #ifdef USE_PCRE_REGEX *arglen = bind->ovector[2*argnum+1]- bind->ovector[2*argnum]; |