summaryrefslogtreecommitdiffstats
path: root/minui
diff options
context:
space:
mode:
authorYabin Cui <yabinc@google.com>2016-02-11 01:41:52 +0100
committerGerrit Code Review <noreply-gerritcodereview@google.com>2016-02-11 01:41:52 +0100
commit71c657a10e39cc99b718fd88784c1437c10fb79e (patch)
treedb80ceb33f745ee7fe076d0d58ce33aa18a7ff47 /minui
parentMerge "IO fault injection for OTA packages" (diff)
parentFix some memory leaks. (diff)
downloadandroid_bootable_recovery-71c657a10e39cc99b718fd88784c1437c10fb79e.tar
android_bootable_recovery-71c657a10e39cc99b718fd88784c1437c10fb79e.tar.gz
android_bootable_recovery-71c657a10e39cc99b718fd88784c1437c10fb79e.tar.bz2
android_bootable_recovery-71c657a10e39cc99b718fd88784c1437c10fb79e.tar.lz
android_bootable_recovery-71c657a10e39cc99b718fd88784c1437c10fb79e.tar.xz
android_bootable_recovery-71c657a10e39cc99b718fd88784c1437c10fb79e.tar.zst
android_bootable_recovery-71c657a10e39cc99b718fd88784c1437c10fb79e.zip
Diffstat (limited to '')
-rw-r--r--minui/resources.cpp22
1 files changed, 9 insertions, 13 deletions
diff --git a/minui/resources.cpp b/minui/resources.cpp
index 63a0dff28..fdbe554fe 100644
--- a/minui/resources.cpp
+++ b/minui/resources.cpp
@@ -28,6 +28,7 @@
#include <linux/fb.h>
#include <linux/kd.h>
+#include <vector>
#include <png.h>
#include "minui.h"
@@ -398,18 +399,13 @@ int res_create_localized_alpha_surface(const char* name,
png_infop info_ptr = NULL;
png_uint_32 width, height;
png_byte channels;
- unsigned char* row;
png_uint_32 y;
+ std::vector<unsigned char> row;
*pSurface = NULL;
if (locale == NULL) {
- surface = malloc_surface(0);
- surface->width = 0;
- surface->height = 0;
- surface->row_bytes = 0;
- surface->pixel_bytes = 1;
- goto exit;
+ return result;
}
result = open_png(name, &png_ptr, &info_ptr, &width, &height, &channels);
@@ -420,13 +416,13 @@ int res_create_localized_alpha_surface(const char* name,
goto exit;
}
- row = reinterpret_cast<unsigned char*>(malloc(width));
+ row.resize(width);
for (y = 0; y < height; ++y) {
- png_read_row(png_ptr, row, NULL);
+ png_read_row(png_ptr, row.data(), NULL);
int w = (row[1] << 8) | row[0];
int h = (row[3] << 8) | row[2];
int len = row[4];
- char* loc = (char*)row+5;
+ char* loc = reinterpret_cast<char*>(&row[5]);
if (y+1+h >= height || matches_locale(loc, locale)) {
printf(" %20s: %s (%d x %d @ %d)\n", name, loc, w, h, y);
@@ -443,8 +439,8 @@ int res_create_localized_alpha_surface(const char* name,
int i;
for (i = 0; i < h; ++i, ++y) {
- png_read_row(png_ptr, row, NULL);
- memcpy(surface->data + i*w, row, w);
+ png_read_row(png_ptr, row.data(), NULL);
+ memcpy(surface->data + i*w, row.data(), w);
}
*pSurface = reinterpret_cast<GRSurface*>(surface);
@@ -452,7 +448,7 @@ int res_create_localized_alpha_surface(const char* name,
} else {
int i;
for (i = 0; i < h; ++i, ++y) {
- png_read_row(png_ptr, row, NULL);
+ png_read_row(png_ptr, row.data(), NULL);
}
}
}