summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--riscos/gui/url_bar.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/riscos/gui/url_bar.c b/riscos/gui/url_bar.c
index 5eccd602e..a25ea8748 100644
--- a/riscos/gui/url_bar.c
+++ b/riscos/gui/url_bar.c
@@ -83,6 +83,7 @@ struct url_bar {
wimp_i text_icon;
char *text_buffer;
size_t text_size;
+ char *text_buffer_utf8;
wimp_i suggest_icon;
int suggest_x, suggest_y;
@@ -508,6 +509,9 @@ void ro_gui_url_bar_destroy(struct url_bar *url_bar)
if (url_bar == NULL)
return;
+ if (url_bar->text_buffer_utf8 != NULL)
+ free(url_bar->text_buffer_utf8);
+
free(url_bar);
}
@@ -1073,6 +1077,15 @@ const char *ro_gui_url_bar_get_url(struct url_bar *url_bar)
if (url_bar == NULL)
return NULL;
+ if (url_bar->text_buffer_utf8 != NULL) {
+ free(url_bar->text_buffer_utf8);
+ url_bar->text_buffer_utf8 = NULL;
+ }
+
+ if (utf8_from_local_encoding(url_bar->text_buffer, 0, &url_bar->text_buffer_utf8) == NSERROR_OK) {
+ return (const char *) url_bar->text_buffer_utf8;
+ }
+
return (const char *) url_bar->text_buffer;
}