-/* $OSSEC, os_regex_free_pattern.c, v0.1, 2006/01/02, Daniel B. Cid$ */
-
/* Copyright (C) 2009 Trend Micro Inc.
* All right reserved.
*
* Foundation
*/
-
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "os_regex_internal.h"
-/** int OSRegex_FreePattern(SRegex *reg) v0.1
- * Release all the memory created by the compilation/executation
- * phases.
- * Returns void.
- */
+/* Release all the memory created by the compilation/execution phases */
void OSRegex_FreePattern(OSRegex *reg)
{
- int i = 0;
-
- /* Freeing the patterns */
- if(reg->patterns)
- {
- char **pattern = reg->patterns;
- while(*pattern)
- {
- if(*pattern)
- free(*pattern);
- pattern++;
- }
-
- free(reg->patterns);
- free(reg->flags);
-
- reg->patterns = NULL;
- reg->flags = NULL;
+ /* Free the match data */
+ if (reg->match_data) {
+ pcre2_match_data_free(reg->match_data);
+ reg->match_data = NULL;
}
- /* Freeing the closure */
- if(reg->prts_closure)
- {
- i = 0;
- while(reg->prts_closure[i])
- {
- free(reg->prts_closure[i]);
- i++;
- }
- free(reg->prts_closure);
- reg->prts_closure = NULL;
+ /* Free the regex */
+ if (reg->regex) {
+ pcre2_code_free(reg->regex);
+ reg->regex = NULL;
}
- /* Freeing the str */
- if(reg->prts_str)
- {
- i = 0;
- while(reg->prts_str[i])
- {
- free(reg->prts_str[i]);
- i++;
- }
- free(reg->prts_str);
- reg->prts_str = NULL;
+ /* Free the patter, */
+ if (reg->pattern) {
+ free(reg->pattern);
+ reg->pattern = NULL;
}
- /* Freeing the sub strings */
- if(reg->sub_strings)
- {
+ /* Free the sub strings */
+ if (reg->sub_strings) {
OSRegex_FreeSubStrings(reg);
free(reg->sub_strings);
reg->sub_strings = NULL;
return;
}
-
-/* EOF */