{
struct evbuffer *buf = evbuffer_new();
const char *p, *end;
- char *result;
+ char *result = NULL;
- if (buf == NULL) {
- return (NULL);
+ if (!buf) {
+ goto out;
}
-
if (len >= 0) {
if (uri + len < uri) {
- return (NULL);
+ goto out;
}
end = uri + len;
if (slen >= EV_SSIZE_MAX) {
/* we don't want to mix signed and unsigned */
- return (NULL);
+ goto out;
}
if (uri + slen < uri) {
- return (NULL);
+ goto out;
}
end = uri + slen;
if (result)
evbuffer_remove(buf, result, evbuffer_get_length(buf));
- evbuffer_free(buf);
-
- return (result);
+out:
+ if (buf)
+ evbuffer_free(buf);
+ return result;
}
char *