about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--keyboard.c6
-rw-r--r--keyboard.h2
-rw-r--r--main.c6
3 files changed, 8 insertions, 6 deletions
diff --git a/keyboard.c b/keyboard.c
index bfebdbe..1cc50da 100644
--- a/keyboard.c
+++ b/keyboard.c
@@ -15,9 +15,9 @@ void
 kbd_init(struct kbd *kb) {
 	fprintf(stderr, "Initializing keyboard\n");
 
-	kb->suggs[0].label = "Hello";
-	kb->suggs[1].label = "World";
-	kb->suggs[2].label = "World";
+	kb->suggs[0].label = strdup("Hello");
+	kb->suggs[1].label = strdup("Sugar");
+	kb->suggs[2].label = strdup("Pie");
 	kb->suggs[3].label = NULL;
 }
 
diff --git a/keyboard.h b/keyboard.h
index 2827b6a..7189d70 100644
--- a/keyboard.h
+++ b/keyboard.h
@@ -24,7 +24,7 @@ struct clr_scheme {
 };
 
 struct key {
-	const char *label;       // primary label
+	char *label;
 	// actual coordinates on the surface (pixels), will be computed automatically
 	// for all keys
 	uint32_t x, y, w, h;
diff --git a/main.c b/main.c
index 5ffb772..c7d04ec 100644
--- a/main.c
+++ b/main.c
@@ -391,7 +391,7 @@ handle_input(FILE *fd, struct key *sugg) {
 		char *l = line;
 		for (i = 0; l[i+1]; i++) {
 			if (l[i] == '\t') {
-				// free label?
+				free(key->label);
 				key->label = strndup(l,i);
 				l += i + 1;
 				i = 0;
@@ -400,8 +400,10 @@ handle_input(FILE *fd, struct key *sugg) {
 				break;
 			}
 		}		
+		free(key->label);
 		key->label = strndup(l,i);
-		key+=sizeof(struct key*);
+		key++;
+		free(key->label);
 		key->label = NULL;
 	}