mirror of
https://github.com/netsurf-browser/netsurf
synced 2024-12-23 04:26:50 +03:00
Constify ro_uri_launch()
If the URL is too long to fit into a non-indirected ANT URLLoad message, then skip the ANT URLLoad broadcast and jump straight to using URI_Dispatch. We don't support indirected ANT URLLoad messages as their potential for memory leakage is too great. svn path=/trunk/netsurf/; revision=8233
This commit is contained in:
parent
7e01924ecf
commit
a3e205bbd9
22
riscos/uri.c
22
riscos/uri.c
@ -64,7 +64,7 @@ void ro_uri_message_received(wimp_message *msg)
|
||||
free(uri_requested);
|
||||
}
|
||||
|
||||
bool ro_uri_launch(char *uri)
|
||||
bool ro_uri_launch(const char *uri)
|
||||
{
|
||||
uri_h uri_handle;
|
||||
wimp_t handle_task;
|
||||
@ -84,19 +84,35 @@ bool ro_uri_launch(char *uri)
|
||||
void ro_uri_bounce(wimp_message *msg)
|
||||
{
|
||||
uri_full_message_process *message = (uri_full_message_process *)msg;
|
||||
char uri_buf[512];
|
||||
int size;
|
||||
char *uri_buf;
|
||||
os_error *e;
|
||||
|
||||
if ((message->flags & 1) == 0)
|
||||
return;
|
||||
|
||||
e = xuri_request_uri(0, uri_buf, sizeof uri_buf, message->handle, 0);
|
||||
/* Get required buffer size */
|
||||
e = xuri_request_uri(0, NULL, 0, message->handle, &size);
|
||||
if (e) {
|
||||
LOG(("xuri_request_uri: %d: %s", e->errnum, e->errmess));
|
||||
return;
|
||||
}
|
||||
|
||||
uri_buf = malloc(size);
|
||||
if (uri_buf == NULL)
|
||||
return;
|
||||
|
||||
/* Get URI */
|
||||
e = xuri_request_uri(0, uri_buf, size, message->handle, 0);
|
||||
if (e) {
|
||||
LOG(("xuri_request_uri: %d: %s", e->errnum, e->errmess));
|
||||
free(uri_buf);
|
||||
return;
|
||||
}
|
||||
|
||||
ro_url_load(uri_buf);
|
||||
|
||||
free(uri_buf);
|
||||
|
||||
return;
|
||||
}
|
||||
|
@ -24,7 +24,7 @@
|
||||
#include "oslib/wimp.h"
|
||||
|
||||
void ro_uri_message_received(wimp_message *message);
|
||||
bool ro_uri_launch(char *uri);
|
||||
bool ro_uri_launch(const char *uri);
|
||||
void ro_uri_bounce(wimp_message *message);
|
||||
|
||||
#endif
|
||||
|
@ -131,8 +131,11 @@ void ro_url_broadcast(const char *url)
|
||||
os_error *error;
|
||||
int len = strlen(url) + 1;
|
||||
|
||||
if (236 < len)
|
||||
len = 236;
|
||||
/* If URL is too long, then forget ANT and try URI, instead */
|
||||
if (236 < len) {
|
||||
ro_uri_launch(url);
|
||||
return;
|
||||
}
|
||||
|
||||
message.size = ((20+len+3) & ~3);
|
||||
message.your_ref = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user