svg_loader: preventing memory leak 17/288817/1
authorMira Grudzinska <m.grudzinska@samsung.com>
Sat, 8 Jan 2022 22:47:38 +0000 (23:47 +0100)
committerMichal Szczecinski <mihashco89@gmail.com>
Thu, 23 Feb 2023 09:05:35 +0000 (10:05 +0100)
A memory leak occured when the 'id' attribute was given multiple times
for a given gradient element. Fixed.

Change-Id: I386565d016c23172dc6b2628ef0f0c158a461417

src/loaders/svg/tvgSvgLoader.cpp

index 252a901..42f85a8 100644 (file)
@@ -2098,6 +2098,7 @@ static bool _attrParseRadialGradientNode(void* data, const char* key, const char
     }
 
     if (!strcmp(key, "id")) {
+        if (grad->id && value) free(grad->id);
         grad->id = _copyId(value);
     } else if (!strcmp(key, "spreadMethod")) {
         grad->spread = _parseSpreadValue(value);
@@ -2286,6 +2287,7 @@ static bool _attrParseLinearGradientNode(void* data, const char* key, const char
     }
 
     if (!strcmp(key, "id")) {
+        if (grad->id && value) free(grad->id);
         grad->id = _copyId(value);
     } else if (!strcmp(key, "spreadMethod")) {
         grad->spread = _parseSpreadValue(value);