mirror of
https://github.com/netsurf-browser/netsurf
synced 2024-11-22 22:41:30 +03:00
make resource fetcher cope with missing resources gracefully
svn path=/trunk/netsurf/; revision=12994
This commit is contained in:
parent
59fdc29e66
commit
443dce6e80
@ -86,6 +86,8 @@ static struct fetch_resource_map_entry {
|
|||||||
nsurl *url;
|
nsurl *url;
|
||||||
} fetch_resource_map[NOF_ELEMENTS(fetch_resource_paths)];
|
} fetch_resource_map[NOF_ELEMENTS(fetch_resource_paths)];
|
||||||
|
|
||||||
|
static uint32_t fetch_resource_path_count;
|
||||||
|
|
||||||
/** issue fetch callbacks with locking */
|
/** issue fetch callbacks with locking */
|
||||||
static inline bool fetch_resource_send_callback(fetch_msg msg,
|
static inline bool fetch_resource_send_callback(fetch_msg msg,
|
||||||
struct fetch_resource_context *ctx, const void *data,
|
struct fetch_resource_context *ctx, const void *data,
|
||||||
@ -173,8 +175,10 @@ static bool fetch_resource_initialise(lwc_string *scheme)
|
|||||||
struct fetch_resource_map_entry *e;
|
struct fetch_resource_map_entry *e;
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
|
|
||||||
|
fetch_resource_path_count = 0;
|
||||||
|
|
||||||
for (i = 0; i < NOF_ELEMENTS(fetch_resource_paths); i++) {
|
for (i = 0; i < NOF_ELEMENTS(fetch_resource_paths); i++) {
|
||||||
e = &fetch_resource_map[i];
|
e = &fetch_resource_map[fetch_resource_path_count];
|
||||||
|
|
||||||
if (lwc_intern_string(fetch_resource_paths[i],
|
if (lwc_intern_string(fetch_resource_paths[i],
|
||||||
strlen(fetch_resource_paths[i]),
|
strlen(fetch_resource_paths[i]),
|
||||||
@ -189,14 +193,8 @@ static bool fetch_resource_initialise(lwc_string *scheme)
|
|||||||
e->url = gui_get_resource_url(fetch_resource_paths[i]);
|
e->url = gui_get_resource_url(fetch_resource_paths[i]);
|
||||||
if (e->url == NULL) {
|
if (e->url == NULL) {
|
||||||
lwc_string_unref(e->path);
|
lwc_string_unref(e->path);
|
||||||
|
} else {
|
||||||
while (i > 0) {
|
fetch_resource_path_count++;
|
||||||
i--;
|
|
||||||
lwc_string_unref(fetch_resource_map[i].path);
|
|
||||||
nsurl_unref(fetch_resource_map[i].url);
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,7 +206,7 @@ static void fetch_resource_finalise(lwc_string *scheme)
|
|||||||
{
|
{
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
|
|
||||||
for (i = 0; i < NOF_ELEMENTS(fetch_resource_map); i++) {
|
for (i = 0; i < fetch_resource_path_count; i++) {
|
||||||
lwc_string_unref(fetch_resource_map[i].path);
|
lwc_string_unref(fetch_resource_map[i].path);
|
||||||
nsurl_unref(fetch_resource_map[i].url);
|
nsurl_unref(fetch_resource_map[i].url);
|
||||||
}
|
}
|
||||||
@ -237,7 +235,7 @@ fetch_resource_setup(struct fetch *fetchh,
|
|||||||
bool match;
|
bool match;
|
||||||
|
|
||||||
/* Ensure requested path is valid */
|
/* Ensure requested path is valid */
|
||||||
for (i = 0; i < NOF_ELEMENTS(fetch_resource_map); i++) {
|
for (i = 0; i < fetch_resource_path_count; i++) {
|
||||||
if (lwc_string_isequal(path,
|
if (lwc_string_isequal(path,
|
||||||
fetch_resource_map[i].path,
|
fetch_resource_map[i].path,
|
||||||
&match) == lwc_error_ok && match) {
|
&match) == lwc_error_ok && match) {
|
||||||
|
Loading…
Reference in New Issue
Block a user