diff -uNrp zabbix-2.0.4.orig/src/libs/zbxserver/evalfunc.c zabbix-2.0.4/src/libs/zbxserver/evalfunc.c
--- zabbix-2.0.4.orig/src/libs/zbxserver/evalfunc.c	2012-12-08 20:09:15.000000000 +0900
+++ zabbix-2.0.4/src/libs/zbxserver/evalfunc.c	2012-12-13 15:32:54.000000000 +0900
@@ -176,7 +176,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));
@@ -1710,7 +1713,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:
