Fix a crash
[framework/location/libdecarta.git] / location_module / location_decarta.c
index fa0ba02..42d5d51 100755 (executable)
@@ -315,6 +315,13 @@ position_cb (DecartaError deca_err,
                                pos = get_location_pos_from_decarta_pos (geocode->pos);
                                acc = location_accuracy_copy ((LocationAccuracy *)(data->userdata2));
 
+                               if (!pos) {
+                                       if (acc) {
+                                               location_accuracy_free(acc);
+                                               acc = NULL;
+                                       }
+                                       continue;
+                               }
                                DECARTA_LOGD("location decarta plugin: position_cb %d, lat %f, lon %f ", i++, pos->latitude, pos->longitude);
 
                                position_list = g_list_append (position_list, (gpointer)pos);
@@ -331,6 +338,7 @@ position_cb (DecartaError deca_err,
                error = convert_decarta_error_to_location_error (deca_err);
        }
        if (data->pos_cb) {
+               if (position_list == NULL) error = LOCATION_ERROR_NOT_FOUND;
                data->pos_cb(error, position_list, accuracy_list, data->userdata);
        }
 
@@ -1044,6 +1052,7 @@ get_reverse_geocode(gpointer handle,
                        decarta_geocode_free (geocode);
                }
        }
+
        return convert_decarta_error_to_location_error (ret);
 }