Commit 93cb1ef2 authored by Vojtech Bocek's avatar Vojtech Bocek Committed by Gerrit Code Review
Browse files

Fix crash while loading config due to incorrect tw_storage_path


Change-Id: Ia5957efe616defa4272501cd8f31d26d394077bb
Signed-off-by: default avatarVojtech Bocek <vbocek@gmail.com>
parent ee71706a
......@@ -280,7 +280,9 @@ error:
fclose(in);
string current = GetCurrentStoragePath();
TWPartition* Part = PartitionManager.Find_Partition_By_Path(current);
if (current != Part->Storage_Path && Part->Mount(false)) {
if(!Part)
Part = PartitionManager.Get_Default_Storage_Partition();
if (Part && current != Part->Storage_Path && Part->Mount(false)) {
LOGINFO("LoadValues setting storage path to '%s'\n", Part->Storage_Path.c_str());
SetValue("tw_storage_path", Part->Storage_Path);
} else {
......@@ -586,11 +588,16 @@ void DataManager::SetDefaultValues()
mConstValues.insert(make_pair("false", "0"));
mConstValues.insert(make_pair(TW_VERSION_VAR, TW_VERSION_STR));
mValues.insert(make_pair("tw_storage_path", make_pair("/", 1)));
mValues.insert(make_pair("tw_button_vibrate", make_pair("80", 1)));
mValues.insert(make_pair("tw_keyboard_vibrate", make_pair("40", 1)));
mValues.insert(make_pair("tw_action_vibrate", make_pair("160", 1)));
TWPartition *store = PartitionManager.Get_Default_Storage_Partition();
if(store)
mValues.insert(make_pair("tw_storage_path", make_pair(store->Storage_Path.c_str(), 1)));
else
mValues.insert(make_pair("tw_storage_path", make_pair("/", 1)));
#ifdef TW_FORCE_CPUINFO_FOR_DEVICE_ID
printf("TW_FORCE_CPUINFO_FOR_DEVICE_ID := true\n");
#endif
......
......@@ -1955,3 +1955,19 @@ void TWPartitionManager::Output_Storage_Fstab(void) {
}
fclose(fp);
}
TWPartition *TWPartitionManager::Get_Default_Storage_Partition()
{
TWPartition *res = NULL;
for (std::vector<TWPartition*>::iterator iter = Partitions.begin(); iter != Partitions.end(); ++iter) {
if(!(*iter)->Is_Storage)
continue;
if((*iter)->Is_Settings_Storage)
return *iter;
if(!res)
res = *iter;
}
return res;
}
......@@ -206,6 +206,7 @@ public:
void Mount_All_Storage(void); // Mounts all storage locations
void UnMount_Main_Partitions(void); // Unmounts system and data if not data/media and boot if boot is mountable
int Partition_SDCard(void); // Repartitions the sdcard
TWPartition *Get_Default_Storage_Partition(); // Returns a pointer to a default storage partition
int Fix_Permissions();
void Get_Partition_List(string ListType, std::vector<PartitionList> *Partition_List);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment