Fixed going from View to Create then crash
This commit is contained in:
parent
89e49adf5a
commit
736277bc76
4 changed files with 52 additions and 41 deletions
|
@ -1 +0,0 @@
|
|||
Data: Q|A|S|0
|
|
@ -36,6 +36,9 @@ char** split_string(const char* str, char delimiter, int* count) {
|
|||
return result;
|
||||
}
|
||||
void string_append(char* first, const char* second) {
|
||||
// Store first index
|
||||
char* i_first = first;
|
||||
|
||||
// Get to the end of string 1
|
||||
while (*first) {
|
||||
++first;
|
||||
|
@ -45,6 +48,9 @@ void string_append(char* first, const char* second) {
|
|||
while (*second) {
|
||||
*first++ = *second++;
|
||||
}
|
||||
|
||||
// Reset index
|
||||
first = i_first;
|
||||
}
|
||||
void manager_loadnames(Manager* manager){
|
||||
// Loading the names of all passwords
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
// Structures
|
||||
typedef struct {
|
||||
Password* current;
|
||||
Password* new;
|
||||
|
||||
char** names;
|
||||
int count;
|
||||
|
|
|
@ -229,47 +229,57 @@ void FP_Scene_Enter_Create(void* context) {
|
|||
// Reset page
|
||||
submenu_reset(app->submenu);
|
||||
|
||||
// Did we already start a password?
|
||||
if (!app->manager->current) {
|
||||
app->manager->current = malloc(sizeof(Password));
|
||||
}
|
||||
|
||||
// Checking if we typed something before
|
||||
if (app->temp) {
|
||||
// Boolean
|
||||
bool is_field = true;
|
||||
|
||||
// Checking if it's any of the following:
|
||||
if (!strcmp(app->temp, "Username")) {is_field = false;}
|
||||
if (!strcmp(app->temp, "Password")) {is_field = false;}
|
||||
|
||||
// We're good!
|
||||
if(is_field) {
|
||||
// Did we already start a password?
|
||||
if (!app->manager->new) {
|
||||
app->manager->new = malloc(sizeof(Password));
|
||||
}
|
||||
|
||||
// Checking what we selected
|
||||
switch (app->selection) {
|
||||
case 0: // Name
|
||||
// Does name already exist?
|
||||
if (app->manager->current->name) {
|
||||
free(app->manager->current->name);
|
||||
if (app->manager->new->name) {
|
||||
free(app->manager->new->name);
|
||||
}
|
||||
|
||||
// Copying it
|
||||
app->manager->current->name = malloc(sizeof(char*));
|
||||
strcpy(app->manager->current->name, app->temp);
|
||||
app->manager->new->name = malloc(sizeof(char*));
|
||||
strcpy(app->manager->new->name, app->temp);
|
||||
|
||||
break;
|
||||
case 1: // Username
|
||||
// Does user already exist?
|
||||
if (app->manager->current->user) {
|
||||
free(app->manager->current->user);
|
||||
if (app->manager->new->user) {
|
||||
free(app->manager->new->user);
|
||||
}
|
||||
|
||||
// Copying it
|
||||
app->manager->current->user = malloc(sizeof(char*));
|
||||
strcpy(app->manager->current->user, app->temp);
|
||||
app->manager->new->user = malloc(sizeof(char*));
|
||||
strcpy(app->manager->new->user, app->temp);
|
||||
break;
|
||||
case 2: // Password
|
||||
// Does phrase already exist?
|
||||
if (app->manager->current->phrase) {
|
||||
free(app->manager->current->phrase);
|
||||
if (app->manager->new->phrase) {
|
||||
free(app->manager->new->phrase);
|
||||
}
|
||||
|
||||
// Copying it
|
||||
app->manager->current->phrase = malloc(sizeof(char*));
|
||||
strcpy(app->manager->current->phrase, app->temp);
|
||||
app->manager->new->phrase = malloc(sizeof(char*));
|
||||
strcpy(app->manager->new->phrase, app->temp);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Freeing temp
|
||||
free(app->temp);
|
||||
|
@ -518,12 +528,7 @@ bool FP_Scene_Event_Create(void* context, SceneManagerEvent event) {
|
|||
break;
|
||||
case FP_Scene_Create_Event_Done:
|
||||
// Save the password
|
||||
manager_savepass(app->manager, app->manager->current);
|
||||
|
||||
// Freeing temp string
|
||||
if (app->temp) {
|
||||
free(app->temp);
|
||||
}
|
||||
manager_savepass(app->manager, app->manager->new);
|
||||
|
||||
// Reload manager
|
||||
manager_free(app->manager);
|
||||
|
|
Loading…
Reference in a new issue