diff -uNrp zabbix-1.8.15.orig/src/libs/zbxserver/evalfunc.c zabbix-1.8.15/src/libs/zbxserver/evalfunc.c
--- zabbix-1.8.15.orig/src/libs/zbxserver/evalfunc.c	2012-08-20 23:27:27.000000000 +0900
+++ zabbix-1.8.15/src/libs/zbxserver/evalfunc.c	2012-11-28 18:33:44.642874484 +0900
@@ -177,7 +177,10 @@ static int	evaluate_LOGEVENTID(char *val
 	}
 
 	if ('@' == *arg1)
+	{
+		clean_regexps_ex(regexps, &regexps_num);
 		zbx_free(regexps);
+	}
 	zbx_free(arg1);
 clean:
 	zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __function_name, zbx_result_string(res));
@@ -1696,7 +1699,10 @@ skip_get_history:
 	res = SUCCEED;
 clean:
 	if ((ZBX_FUNC_REGEXP == func || ZBX_FUNC_IREGEXP == func) && '@' == *arg1)
+	{
+		clean_regexps_ex(regexps, &regexps_num);
 		zbx_free(regexps);
+	}
 
 	zbx_free(arg1);
 exit:
