Fix exception 'std::out_of_range' in 'basic_string::replace'
authorTomasz Czekala <t.czekala@partner.samsung.com>
Thu, 5 Feb 2015 10:44:40 +0000 (11:44 +0100)
committerYoungsoo Choi <kenshin.choi@samsung.com>
Tue, 10 Jul 2018 06:57:09 +0000 (06:57 +0000)
In EWebView::GetPlatformLocale we didn't check if string returned by
setlocale(LC_CTYPE, 0) has character '_', we assumed it has, and it seems
this assumption was wrong

Bug: http://107.108.218.239/bugzilla/show_bug.cgi?id=11070
Reviewed by: Daniel Waślicki, Filip Piechocki, Jaesik Chang, Piotr Tworek

Change-Id: I8baddfad7a66a9356ad44e3bc2c3b3c6f312e8f7
Signed-off-by: Tomasz Czekala <t.czekala@partner.samsung.com>
tizen_src/impl/eweb_view.cc

index 45bb2db36c6f6c072ea8604241163ced41da4a3b..24eb8889234f39c2d271c821c490589c4dbcea4e 100644 (file)
@@ -2134,10 +2134,12 @@ std::string EWebView::GetPlatformLocale() {
   if (!local_default)
     return std::string("en-US");
   std::string locale = std::string(local_default);
-  locale.replace(locale.find('_'),1,"-");
-  size_t position = locale.find('.');
+  size_t position = locale.find('_');
   if (position != std::string::npos)
-    locale = locale.substr(0,position);
+    locale.replace(position, 1, "-");
+  position = locale.find('.');
+  if (position != std::string::npos)
+    locale = locale.substr(0, position);
   return locale;
 }