MINOR: WURFL: wurfl_get() and wurfl_get_all() now return an empty string if device detection fails
diff --git a/src/wurfl.c b/src/wurfl.c
index e7256d9..ae3d2fc 100644
--- a/src/wurfl.c
+++ b/src/wurfl.c
@@ -433,14 +433,14 @@
wh.wsmp = smp;
dHandle = wurfl_lookup(global_wurfl.handle, &ha_wurfl_retrieve_header, &wh);
+ temp = get_trash_chunk();
+ chunk_reset(temp);
+
if (!dHandle) {
ha_wurfl_log("WURFL: unable to retrieve device from request %s\n", wurfl_get_error_message(global_wurfl.handle));
- return 1;
+ goto wurfl_get_all_completed;
}
- temp = get_trash_chunk();
- chunk_reset(temp);
-
list_for_each_entry(wi, &global_wurfl.information_list, list) {
switch(wi->data.type) {
@@ -481,6 +481,8 @@
chunk_appendf(temp, "%c", global_wurfl.information_list_separator);
}
+wurfl_get_all_completed:
+
wurfl_device_destroy(dHandle);
smp->data.u.str.area = temp->area;
smp->data.u.str.data = temp->data;
@@ -507,14 +509,14 @@
wh.wsmp = smp;
dHandle = wurfl_lookup(global_wurfl.handle, &ha_wurfl_retrieve_header, &wh);
+ temp = get_trash_chunk();
+ chunk_reset(temp);
+
if (!dHandle) {
ha_wurfl_log("WURFL: unable to retrieve device from request %s\n", wurfl_get_error_message(global_wurfl.handle));
- return 1;
+ goto wurfl_get_completed;
}
- temp = get_trash_chunk();
- chunk_reset(temp);
-
while (args[i].data.str.area) {
node = ebst_lookup(&global_wurfl.btree, args[i].data.str.area);
@@ -567,6 +569,8 @@
i++;
}
+wurfl_get_completed:
+
wurfl_device_destroy(dHandle);
smp->data.u.str.area = temp->area;
smp->data.u.str.data = temp->data;