Deal properly with "free"ing NULL pointers. We use pcre_study() to improve matching.  When we're done, we free the result of pcre_study() using a call to my_pcre_free(). pcre_study() may return NULL if no state is needed for optimization of the search pattern.  Since we just pass the result of pcre_study() around to other pcre functions, we don't really care about the result, but we do have to free the memory by calling my_pcre_free. However, my_pcre_free couldn't deal with NULL pointers, which caused a crash. We now check for NULL pointers in my_pcre_free. This fixes bug 2869.
Deal properly with "free"ing NULL pointers.
We use pcre_study() to improve matching.  When we're done, we free the
result of pcre_study() using a call to my_pcre_free().
pcre_study() may return NULL if no state is needed for optimization of
the search pattern.  Since we just pass the result of pcre_study()
around to other pcre functions, we don't really care about the result,
but we do have to free the memory by calling my_pcre_free.
However, my_pcre_free couldn't deal with NULL pointers, which caused a
crash.
We now check for NULL pointers in my_pcre_free.
This fixes bug 2869.

zyzyis/monetdb,zyzyis/monetdb,zyzyis/monetdb,zyzyis/monetdb,zyzyis/monetdb,zyzyis/monetdb,zyzyis/monetdb,zyzyis/monetdb,zyzyis/monetdb,zyzyis/monetdb