Fix memory leaks and potential crash of application 72/221972/3 accepted/tizen/unified/20200120.133113 submit/tizen/20200111.060210 submit/tizen/20200111.071320 submit/tizen/20200112.211134 submit/tizen/20200114.214303 submit/tizen/20200115.213910 submit/tizen/20200116.005149 submit/tizen/20200116.043425 submit/tizen/20200116.051036 submit/tizen/20200119.232254
authorOskar Chodowicz <o.chodowicz@partner.samsung.com>
Wed, 8 Jan 2020 13:23:18 +0000 (14:23 +0100)
committerOskar Chodowicz <o.chodowicz@partner.samsung.com>
Fri, 10 Jan 2020 13:10:25 +0000 (14:10 +0100)
Change-Id: I940ce794b601c8d55eb02e2fc0c5aa6c123f5008

src/main.cpp
src/presenter/SwitchesPagePresenter.cpp
src/service/VConf.cpp
src/service/VConf.hpp
src/utils/Geometry.cpp

index cc35b3e445eaf72089b296c5cea60891bf46ab44..de030c718d2c6f0c23c033e1dba8f780b6618320 100644 (file)
@@ -60,12 +60,11 @@ static void on_app_resume(void *priv)
 static void on_app_control(app_control_h service, void *priv)
 {
        char *value = NULL;
-       if (!app_control_get_extra_data(service, "SHOW_US_SETTINGS", &value) && value != NULL && !strcmp(value, "1")) {
+       if (!app_control_get_extra_data(service, "SHOW_US_SETTINGS", &value) && value != NULL && strcmp(value, "1") == 0)
                Singleton<AppContext>::instance().push(std::make_unique<UniversalSwitchSettingsPagePresenter>());
-               free(value);
-               return;
-       }
-       Singleton<AppContext>::instance().push(std::make_unique<MainPagePresenter>());
+       else
+               Singleton<AppContext>::instance().push(std::make_unique<MainPagePresenter>());
+       free(value);
 }
 
 static void _lang_changed(app_event_info_h event_info, void *data)
index 7a99246a9baba1ad69339f21663256835b0e09d0..60b38fd20019d4f1fe3fb1a0ef1c8ac32f857223 100644 (file)
@@ -69,18 +69,20 @@ void SwitchesPagePresenter::addItemsToList()
 
 void SwitchesPagePresenter::createUpdatePage(const SwitchConfigurationItem &item)
 {
-       auto providerName = utils::stringSplitByDelimiter(item.switchId, '_')[0];
-       if (providerName == ACCESSIBILITY_UNIVERSAL_SWITCH_SCREEN_SWITCH_PROVIDER) {
-               Singleton<AppContext>::instance().push(std::make_unique<SelectActionPagePresenter>(item.switchId, item.userName, ChangeType::UPDATE, 0, item.activityType));
-               return;
-       }
-       if (providerName == ACCESSIBILITY_UNIVERSAL_SWITCH_ACCESSORIES_SWITCH_PROVIDER) {
-               Singleton<AppContext>::instance().push(std::make_unique<UpdateAccessoriesSwitchPagePresenter>(item.switchId));
-               return;
-       }
-       if (providerName == ACCESSIBILITY_UNIVERSAL_SWITCH_CAMERA_SWITCH_PROVIDER) {
-               Singleton<AppContext>::instance().push(std::make_unique<SelectActionPagePresenter>(item.switchId, item.userName, ChangeType::UPDATE, 0, item.activityType));
-               return;
+       auto tokens = utils::stringSplitByDelimiter(item.switchId, '_');
+       if (!tokens.empty()) {
+               if (tokens[0] == ACCESSIBILITY_UNIVERSAL_SWITCH_SCREEN_SWITCH_PROVIDER) {
+                       Singleton<AppContext>::instance().push(std::make_unique<SelectActionPagePresenter>(item.switchId, item.userName, ChangeType::UPDATE, 0, item.activityType));
+                       return;
+               }
+               if (tokens[0] == ACCESSIBILITY_UNIVERSAL_SWITCH_ACCESSORIES_SWITCH_PROVIDER) {
+                       Singleton<AppContext>::instance().push(std::make_unique<UpdateAccessoriesSwitchPagePresenter>(item.switchId));
+                       return;
+               }
+               if (tokens[0] == ACCESSIBILITY_UNIVERSAL_SWITCH_CAMERA_SWITCH_PROVIDER) {
+                       Singleton<AppContext>::instance().push(std::make_unique<SelectActionPagePresenter>(item.switchId, item.userName, ChangeType::UPDATE, 0, item.activityType));
+                       return;
+               }
        }
 }
 
index 1994110f6dfbb9baa811c1358a7bcba5c9754be4..a0236091f593472194037a857f50dafc0b376dd1 100644 (file)
@@ -203,9 +203,9 @@ class VConfImpl : public VConfInterface
                auto k = keyPrefix + key;
                auto vconfStr = vconf_get_str(k.c_str());
                if (vconfStr) {
-                       auto s = std::string{ vconfStr };
+                       auto s = std::string{vconfStr};
                        free(vconfStr);
-                       return std::move(s);
+                       return s;
                }
 
                WARNING("Vconf: cant get value for key: %s, returning default value = %s", k.c_str(), value.c_str());
index 48f00a51ca9b9076a8e2d92a2d4fe0babc0c11e9..8e9efb81387fee28c90c8fc2806223c439f37e87 100644 (file)
@@ -47,6 +47,7 @@
 class VConfInterface
 {
        public:
+       virtual ~VConfInterface() = default;
        struct HandleBase
        {
                virtual ~HandleBase() = default;
index 93933a8e47ec85a4f1febd50e629926f63796565..a8809ab7041d60a2b83f645be18f43cc6f4c10ba 100644 (file)
@@ -134,9 +134,9 @@ Color Color::fromABGR(int abgr)
        return {abgr, abgr >> 8, abgr >> 16, abgr >> 24};
 }
 
-const Color Color::RED = Color::fromRGBA(0xff0000ff);
-const Color Color::ORANGE = Color::fromRGBA(0xff8000ff);
-const Color Color::YELLOW = Color::fromRGBA(0xffff00ff);
-const Color Color::GREEN = Color::fromRGBA(0x00ff00ff);
-const Color Color::BLUE = Color::fromRGBA(0x0000ffff);
-const Color Color::GRAY = Color::fromRGBA(0x808080ff);
\ No newline at end of file
+const Color Color::RED = Color{255, 0, 0, 255};
+const Color Color::ORANGE = Color{255, 128, 0, 255};
+const Color Color::YELLOW = Color{255, 255, 0, 255};
+const Color Color::GREEN = Color{0, 255, 0, 255};
+const Color Color::BLUE = Color{0, 0, 255, 255};
+const Color Color::GRAY = Color{128, 128, 128, 255};
\ No newline at end of file