summaryrefslogtreecommitdiff
path: root/utils/url.c
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2014-10-25 23:06:18 +0100
committerVincent Sanders <vince@kyllikki.org>2014-10-25 23:07:00 +0100
commite39606c411bad57de5891965628f6ac278df42ee (patch)
tree697c5404c0a9bbe616bada833db7bb52df9bd778 /utils/url.c
parentdf89f689f7ddcb082b4616c6e32cabbb859b3a11 (diff)
downloadnetsurf-e39606c411bad57de5891965628f6ac278df42ee.tar.gz
netsurf-e39606c411bad57de5891965628f6ac278df42ee.tar.bz2
make regex wrapper return errors instead of just aborting
Diffstat (limited to 'utils/url.c')
-rw-r--r--utils/url.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/utils/url.c b/utils/url.c
index 37fa93967..949478efb 100644
--- a/utils/url.c
+++ b/utils/url.c
@@ -44,10 +44,12 @@ struct url_components_internal {
regex_t url_re, url_up_re;
/* exported interface documented in utils/url.h */
-void url_init(void)
+nserror url_init(void)
{
+ nserror ret;
+
/* regex from RFC 2396 */
- regcomp_wrapper(&url_re, "^[[:space:]]*"
+ ret = regcomp_wrapper(&url_re, "^[[:space:]]*"
#define URL_RE_SCHEME 2
"(([a-zA-Z][-a-zA-Z0-9+.]*):)?"
#define URL_RE_AUTHORITY 4
@@ -59,7 +61,11 @@ void url_init(void)
#define URL_RE_FRAGMENT 9
"(#([^[:space:]]*))?"
"[[:space:]]*$", REG_EXTENDED);
- regcomp_wrapper(&url_up_re,
+ if (ret != NSERROR_OK) {
+ return ret;
+ }
+
+ return regcomp_wrapper(&url_up_re,
"/([^/]?|[.][^./]|[^./][.]|[^./][^./]|[^/][^/][^/]+)"
"/[.][.](/|$)",
REG_EXTENDED);