diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2015-07-23 00:05:22 +0100 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2015-10-24 15:12:57 +0100 |
commit | 65b510fbc3ad822ab8c75e6d94eaee5b6ceb07a4 (patch) | |
tree | e90ae621688c1b4e974e901e12ecfb03bfb059be /amiga/gui.c | |
parent | 5206518a75d34cdf03a5118276e7ba4c106b6bfc (diff) | |
download | netsurf-65b510fbc3ad822ab8c75e6d94eaee5b6ceb07a4.tar.gz netsurf-65b510fbc3ad822ab8c75e6d94eaee5b6ceb07a4.tar.bz2 |
Rework IDN URL retrieval to return an nserror
Diffstat (limited to 'amiga/gui.c')
-rw-r--r-- | amiga/gui.c | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/amiga/gui.c b/amiga/gui.c index 8c2fde542..afc05bf67 100644 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -4892,23 +4892,27 @@ static void gui_window_set_status(struct gui_window *g, const char *text) static nserror gui_window_set_url(struct gui_window *g, nsurl *url) { + size_t idn_url_l; + char *idn_url_s = NULL; + char *url_lc = NULL; + if(!g) return NSERROR_OK; if (g == g->shared->gw) { - if(nsoption_bool(display_decoded_idn) == false) { - RefreshSetGadgetAttrs((struct Gadget *)g->shared->objects[GID_URL], - g->shared->win, NULL, - STRINGA_TextVal, nsurl_access(url), - TAG_DONE); - } else { - char *idn_url = nsurl_access_utf8(url); - char *idn_url_lc = ami_utf8_easy(idn_url); - RefreshSetGadgetAttrs((struct Gadget *)g->shared->objects[GID_URL], - g->shared->win, NULL, - STRINGA_TextVal, idn_url_lc, - TAG_DONE); - free(idn_url); - ami_utf8_free(idn_url_lc); + if(nsoption_bool(display_decoded_idn) == true) { + if (nsurl_access_utf8(url, &idn_url_s, &idn_url_l) == NSERROR_OK) { + url_lc = ami_utf8_easy(idn_url_s); + } + } + + RefreshSetGadgetAttrs((struct Gadget *)g->shared->objects[GID_URL], + g->shared->win, NULL, + STRINGA_TextVal, url_lc ? url_lc : nsurl_access(url), + TAG_DONE); + + if(url_lc) { + ami_utf8_free(url_lc); + if(idn_url_s) free(idn_url_s); } } |