summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data.c4
-rw-r--r--main.c29
2 files changed, 21 insertions, 12 deletions
diff --git a/data.c b/data.c
index a30535a..6434b4e 100644
--- a/data.c
+++ b/data.c
@@ -141,8 +141,8 @@ static bool data_from_str(char const *str, DataType type, void *value) {
case TYPE_S32: return sscanf(str, "%" SCNd32 "%n", ( int32_t *)value, &w) == 1 && w == len;
case TYPE_U64: return sscanf(str, "%" SCNu64 "%n", (uint64_t *)value, &w) == 1 && w == len;
case TYPE_S64: return sscanf(str, "%" SCNd64 "%n", ( int64_t *)value, &w) == 1 && w == len;
- case TYPE_F32: return sscanf(str, "%f%n", (float *)value, &w) == 1 && w == len;
- case TYPE_F64: return sscanf(str, "%lf%n", (double *)value, &w) == 1 && w == len;
+ case TYPE_F32: return sscanf(str, "%f" "%n", (float *)value, &w) == 1 && w == len;
+ case TYPE_F64: return sscanf(str, "%lf" "%n", (double *)value, &w) == 1 && w == len;
case TYPE_ASCII:
if (!char_from_str(str, &c)) return false;
if (c > 127) return false;
diff --git a/main.c b/main.c
index e3bb2cf..1b36e01 100644
--- a/main.c
+++ b/main.c
@@ -395,11 +395,16 @@ G_MODULE_EXPORT void search_start(GtkWidget *_widget, gpointer user_data) {
G_MODULE_EXPORT void search_update(GtkWidget *_widget, gpointer user_data) {
State *state = user_data;
GtkBuilder *builder = state->builder;
+ GtkWidget *search_box = GTK_WIDGET(gtk_builder_get_object(builder, "search-box"));
+ gtk_widget_set_sensitive(search_box, 0); // temporarily disable search box so that you don't accidentally queue up a bunch of updates while it's loading.
+
DataType data_type = state->data_type;
size_t item_size = data_type_size(data_type);
SearchType search_type = state->search_type;
uint64_t *candidates = state->search_candidates;
int memory_reader = memory_reader_open(state);
+ bool success = true;
+
if (memory_reader) {
switch (search_type) {
case SEARCH_ENTER_VALUE: {
@@ -461,7 +466,7 @@ G_MODULE_EXPORT void search_update(GtkWidget *_widget, gpointer user_data) {
start = end;
}
}
- }
+ } else success = false;
} break;
case SEARCH_SAME_DIFFERENT:
// @TODO
@@ -469,17 +474,21 @@ G_MODULE_EXPORT void search_update(GtkWidget *_widget, gpointer user_data) {
break;
}
memory_reader_close(state, memory_reader);
- }
+ } else success = false;
- GtkLabel *steps_completed_label = GTK_LABEL(gtk_builder_get_object(builder, "steps-completed"));
- long steps_completed = 1 + atol(gtk_label_get_text(steps_completed_label));
- {
- char text[32];
- sprintf(text, "%ld", steps_completed);
- gtk_label_set_text(steps_completed_label, text);
+ if (success) {
+ GtkLabel *steps_completed_label = GTK_LABEL(gtk_builder_get_object(builder, "steps-completed"));
+ long steps_completed = 1 + atol(gtk_label_get_text(steps_completed_label));
+ {
+ char text[32];
+ sprintf(text, "%ld", steps_completed);
+ gtk_label_set_text(steps_completed_label, text);
+ }
+ update_candidates(state);
+ update_memory_view(state);
}
- update_candidates(state);
- update_memory_view(state);
+
+ gtk_widget_set_sensitive(search_box, 1);
}
G_MODULE_EXPORT void search_stop(GtkWidget *_widget, gpointer user_data) {