From 1a9b58f083de577e5a81483b899da83a481e06c7 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Andre Date: Tue, 18 Mar 2014 14:48:44 +0900 Subject: [PATCH] Evas gl: Fix buffer dump filenames evas_gl_common_buffer_dump can be used to dump all frames into a series of PNG files. But the filename contained some garbage characters (and potential segv, too). (cherry picked from commit a0f886138ed5a28d0d1596df3b805fca06d1ae31) --- src/modules/evas/engines/gl_common/evas_gl_context.c | 6 +++++- src/modules/evas/engines/gl_x11/evas_engine.c | 3 +-- src/modules/evas/engines/wayland_egl/evas_engine.c | 3 +-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/modules/evas/engines/gl_common/evas_gl_context.c b/src/modules/evas/engines/gl_common/evas_gl_context.c index 2e447d9925..f044a2fe88 100644 --- a/src/modules/evas/engines/gl_common/evas_gl_context.c +++ b/src/modules/evas/engines/gl_common/evas_gl_context.c @@ -3246,7 +3246,11 @@ evas_gl_common_buffer_dump(Evas_Engine_GL_Context *gc, const char* dname, const char fname[100]; int ok = 0; - sprintf(fname, "./%s/win_%s-fc_%03d_%s.png", dname, buf_name, frame, suffix); + if (suffix) + snprintf(fname, sizeof(fname), "./%s/win_%s-fc_%03d_%s.png", dname, buf_name, frame, suffix); + else + snprintf(fname, sizeof(fname), "./%s/win_%s-fc_%03d.png", dname, buf_name, frame); + fname[sizeof(fname) - 1] = '\0'; data1 = (DATA32 *)malloc(gc->w * gc->h * sizeof(DATA32)); data2 = (DATA32 *)malloc(gc->w * gc->h * sizeof(DATA32)); diff --git a/src/modules/evas/engines/gl_x11/evas_engine.c b/src/modules/evas/engines/gl_x11/evas_engine.c index 82ffd05a56..1b0f51bcbf 100644 --- a/src/modules/evas/engines/gl_x11/evas_engine.c +++ b/src/modules/evas/engines/gl_x11/evas_engine.c @@ -1576,7 +1576,6 @@ eng_output_flush(void *data, Evas_Render_Mode render_mode) if (swap_buffer_debug) { char fname[100]; - char suffix[100]; int ret = 0; snprintf(fname, sizeof(fname), "%p", (void*)re->win); @@ -1584,7 +1583,7 @@ eng_output_flush(void *data, Evas_Render_Mode render_mode) (const char*)dname, (const char*)fname, re->frame_cnt, - suffix); + NULL); if (!ret) swap_buffer_debug_mode = 0; } } diff --git a/src/modules/evas/engines/wayland_egl/evas_engine.c b/src/modules/evas/engines/wayland_egl/evas_engine.c index 2de02765a2..d629d78a01 100644 --- a/src/modules/evas/engines/wayland_egl/evas_engine.c +++ b/src/modules/evas/engines/wayland_egl/evas_engine.c @@ -1231,7 +1231,6 @@ eng_output_flush(void *data, Evas_Render_Mode render_mode) if (swap_buffer_debug) { char fname[100]; - char suffix[100]; int ret = 0; sprintf(fname, "%p", (void*)re->win); @@ -1239,7 +1238,7 @@ eng_output_flush(void *data, Evas_Render_Mode render_mode) (const char*)dname, (const char*)fname, re->frame_cnt, - suffix); + NULL); if (!ret) swap_buffer_debug_mode = 0; } }