diff options
| author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2021-10-01 18:21:05 +0300 | 
|---|---|---|
| committer | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2021-10-01 19:29:51 +0300 | 
| commit | 1dffd2a2fe8b2c0835460b84fd63fd19aa74d890 (patch) | |
| tree | 0a050ca10184a8bdd6c12dbc52856057ac26bcd9 | |
| parent | 37e5a0b6629545ab58fe437d81514e5ce928715e (diff) | |
SL-13934 Crash at saveToFile #2
More detailed stream handling and logging
| -rw-r--r-- | indra/newview/llinventorymodel.cpp | 20 | 
1 files changed, 19 insertions, 1 deletions
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index 5abc335d39..72281d9e4c 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -2808,13 +2808,19 @@ bool LLInventoryModel::saveToFile(const std::string& filename,          llofstream fileXML(filename.c_str());          if (!fileXML.is_open())          { -            LL_WARNS(LOG_INV) << "unable to save inventory to: " << filename << LL_ENDL; +            LL_WARNS(LOG_INV) << "Failed to open file. Unable to save inventory to: " << filename << LL_ENDL;              return false;          }          LLSD cache_ver;          cache_ver["inv_cache_version"] = sCurrentInvCacheVersion; +        if (fileXML.fail()) +        { +            LL_WARNS(LOG_INV) << "Failed to write cache version to file. Unable to save inventory to: " << filename << LL_ENDL; +            return false; +        } +          fileXML << LLSDOStreamer<LLSDNotationFormatter>(cache_ver) << std::endl;          S32 count = categories.size(); @@ -2828,12 +2834,24 @@ bool LLInventoryModel::saveToFile(const std::string& filename,                  fileXML << LLSDOStreamer<LLSDNotationFormatter>(cat->exportLLSD()) << std::endl;                  cat_count++;              } + +            if (fileXML.fail()) +            { +                LL_WARNS(LOG_INV) << "Failed to write a folder to file. Unable to save inventory to: " << filename << LL_ENDL; +                return false; +            }          }          S32 it_count = items.size();          for (i = 0; i < it_count; ++i)          {              fileXML << LLSDOStreamer<LLSDNotationFormatter>(items[i]->asLLSD()) << std::endl; + +            if (fileXML.fail()) +            { +                LL_WARNS(LOG_INV) << "Failed to write an item to file. Unable to save inventory to: " << filename << LL_ENDL; +                return false; +            }          }          fileXML.close();  | 
