Now we actually return NGX_ERROR on errors, and provide an error
string for memory allocation errors.
Reported by Markus Linnala.
rc->regex = ngx_pcalloc(rc->pool, sizeof(ngx_regex_t));
if (rc->regex == NULL) {
- return NGX_ERROR;
+ goto nomem;
}
rc->regex->code = re;
if (ngx_pcre_studies != NULL) {
elt = ngx_list_push(ngx_pcre_studies);
if (elt == NULL) {
- return NGX_ERROR;
+ goto nomem;
}
elt->regex = rc->regex;
rc->err.len = ngx_snprintf(rc->err.data, rc->err.len, p, &rc->pattern, n)
- rc->err.data;
- return NGX_OK;
+ return NGX_ERROR;
+
+nomem:
+
+ rc->err.len = ngx_snprintf(rc->err.data, rc->err.len,
+ "regex \"%V\" compilation failed: no memory",
+ &rc->pattern)
+ - rc->err.data;
+ return NGX_ERROR;
}