Fixed unstable string concatenation
This commit is contained in:
parent
736277bc76
commit
c7eb4b1ea3
1 changed files with 22 additions and 37 deletions
|
@ -35,23 +35,6 @@ 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;
|
||||
}
|
||||
|
||||
// Copying Strings
|
||||
while (*second) {
|
||||
*first++ = *second++;
|
||||
}
|
||||
|
||||
// Reset index
|
||||
first = i_first;
|
||||
}
|
||||
void manager_loadnames(Manager* manager){
|
||||
// Loading the names of all passwords
|
||||
char* data = store_load("Data");
|
||||
|
@ -132,45 +115,47 @@ void manager_savepass(Manager* manager, Password* pass) {
|
|||
|
||||
// Is the result empty?
|
||||
if(!result) {
|
||||
// Free prior result
|
||||
free(result);
|
||||
|
||||
// Allocating result
|
||||
result = malloc(sizeof(char*));
|
||||
FuriString* n_result = furi_string_alloc();
|
||||
|
||||
// Setting stuff
|
||||
string_append(result, pass->name);
|
||||
string_append(result, "|");
|
||||
string_append(result, pass->user);
|
||||
string_append(result, "|");
|
||||
string_append(result, pass->phrase);
|
||||
string_append(result, "|0");
|
||||
furi_string_printf(n_result, "%s|%s|%s|0", pass->name, pass->user, pass->phrase);
|
||||
|
||||
// Saving the data
|
||||
store_save("Data", result);
|
||||
char* data = malloc(sizeof(char));
|
||||
strcpy(data, furi_string_get_cstr(n_result));
|
||||
store_save("Data", data);
|
||||
|
||||
// Cleanup
|
||||
free(result);
|
||||
furi_string_free(n_result);
|
||||
free(data);
|
||||
free(pass);
|
||||
} else {
|
||||
// Our new stuff
|
||||
char* new_addon = malloc(sizeof(char*));
|
||||
FuriString* new_addon = furi_string_alloc();
|
||||
|
||||
// Adding the Name
|
||||
string_append(new_addon, "|");
|
||||
string_append(new_addon, pass->name);
|
||||
string_append(new_addon, "|");
|
||||
string_append(new_addon, pass->user);
|
||||
string_append(new_addon, "|");
|
||||
string_append(new_addon, pass->phrase);
|
||||
string_append(new_addon, "|0");
|
||||
furi_string_printf(new_addon, "|%s|%s|%s|0", pass->name, pass->user, pass->phrase);
|
||||
|
||||
// New result
|
||||
FuriString* new_result = furi_string_alloc();
|
||||
|
||||
// Appending addon to result
|
||||
string_append(result, new_addon);
|
||||
furi_string_printf(new_result, "%s%s", result, furi_string_get_cstr(new_addon));
|
||||
|
||||
// Saving the data
|
||||
store_save("Data", result);
|
||||
char* data = malloc(sizeof(char));
|
||||
strcpy(data, furi_string_get_cstr(new_result));
|
||||
store_save("Data", data);
|
||||
|
||||
// Cleanup
|
||||
free(new_addon);
|
||||
furi_string_free(new_addon);
|
||||
furi_string_free(new_result);
|
||||
free(result);
|
||||
free(data);
|
||||
free(pass);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue