From f33cc936d56a5a004f9c9a40a6ff73a7635aca45 Mon Sep 17 00:00:00 2001 From: fcolin Date: Mon, 9 Nov 2009 10:25:50 +0000 Subject: coorection plantage si erreur de compile exp reguliere --- src/ivy.c | 6 ++++-- src/ivybind.c | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/ivy.c b/src/ivy.c index 07e84a4..a702420 100644 --- a/src/ivy.c +++ b/src/ivy.c @@ -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]; -- cgit v1.1