Fixed unstable string concatenation

This commit is contained in:
Maddox Werts 2024-09-08 01:28:55 -04:00
parent 736277bc76
commit c7eb4b1ea3

View file

@ -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);
}
}