summaryrefslogtreecommitdiff
path: root/amiga
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2015-07-23 00:05:22 +0100
committerChris Young <chris@unsatisfactorysoftware.co.uk>2015-10-24 15:12:57 +0100
commit65b510fbc3ad822ab8c75e6d94eaee5b6ceb07a4 (patch)
treee90ae621688c1b4e974e901e12ecfb03bfb059be /amiga
parent5206518a75d34cdf03a5118276e7ba4c106b6bfc (diff)
downloadnetsurf-65b510fbc3ad822ab8c75e6d94eaee5b6ceb07a4.tar.gz
netsurf-65b510fbc3ad822ab8c75e6d94eaee5b6ceb07a4.tar.bz2
Rework IDN URL retrieval to return an nserror
Diffstat (limited to 'amiga')
-rw-r--r--amiga/gui.c32
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);
}
}