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; 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){ void manager_loadnames(Manager* manager){
// Loading the names of all passwords // Loading the names of all passwords
char* data = store_load("Data"); char* data = store_load("Data");
@ -132,45 +115,47 @@ void manager_savepass(Manager* manager, Password* pass) {
// Is the result empty? // Is the result empty?
if(!result) { if(!result) {
// Free prior result
free(result);
// Allocating result // Allocating result
result = malloc(sizeof(char*)); FuriString* n_result = furi_string_alloc();
// Setting stuff // Setting stuff
string_append(result, pass->name); furi_string_printf(n_result, "%s|%s|%s|0", pass->name, pass->user, pass->phrase);
string_append(result, "|");
string_append(result, pass->user);
string_append(result, "|");
string_append(result, pass->phrase);
string_append(result, "|0");
// Saving the data // 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 // Cleanup
free(result); furi_string_free(n_result);
free(data);
free(pass); free(pass);
} else { } else {
// Our new stuff // Our new stuff
char* new_addon = malloc(sizeof(char*)); FuriString* new_addon = furi_string_alloc();
// Adding the Name // Adding the Name
string_append(new_addon, "|"); furi_string_printf(new_addon, "|%s|%s|%s|0", pass->name, pass->user, pass->phrase);
string_append(new_addon, pass->name);
string_append(new_addon, "|"); // New result
string_append(new_addon, pass->user); FuriString* new_result = furi_string_alloc();
string_append(new_addon, "|");
string_append(new_addon, pass->phrase);
string_append(new_addon, "|0");
// Appending addon to result // 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 // 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 // Cleanup
free(new_addon); furi_string_free(new_addon);
furi_string_free(new_result);
free(result); free(result);
free(data);
free(pass); free(pass);
} }
} }