summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Philippe Andre <jp.andre@samsung.com>2015-12-10 15:48:15 +0900
committerCedric BAIL <cedric@osg.samsung.com>2016-01-04 01:12:19 +0100
commitf7bebd54117c3f99f6300ca7e29e374a004feb19 (patch)
tree88350c7286d218168457e6d77f49e27e48d6b187
parentc392f3deeeff25150cc0e6c28442749247d8c5c4 (diff)
downloadefl-f7bebd54117c3f99f6300ca7e29e374a004feb19.tar.gz
ector: refuse write map if buffer is not writable
-rw-r--r--src/lib/ector/software/ector_software_buffer.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/lib/ector/software/ector_software_buffer.c b/src/lib/ector/software/ector_software_buffer.c
index cd9991f4f5..26c1329cda 100644
--- a/src/lib/ector/software/ector_software_buffer.c
+++ b/src/lib/ector/software/ector_software_buffer.c
@@ -134,7 +134,7 @@ _ector_software_buffer_base_ector_generic_buffer_pixels_set(Eo *obj, Ector_Softw
EOLIAN static void *
_ector_software_buffer_base_ector_generic_buffer_map(Eo *obj EINA_UNUSED, Ector_Software_Buffer_Base_Data *pd,
- unsigned int *length, Ector_Buffer_Access_Flag mode EINA_UNUSED,
+ unsigned int *length, Ector_Buffer_Access_Flag mode,
unsigned int x, unsigned int y, unsigned int w, unsigned int h,
Efl_Gfx_Colorspace cspace EINA_UNUSED, unsigned int *stride)
{
@@ -147,6 +147,8 @@ _ector_software_buffer_base_ector_generic_buffer_map(Eo *obj EINA_UNUSED, Ector_
if (!w || !h || ((x + w) > pd->generic->w) || (y + h > pd->generic->h))
fail("Invalid region requested: wanted %u,%u %ux%u but image is %ux%u",
x, y, w, h, pd->generic->w, pd->generic->h);
+ if ((mode & ECTOR_BUFFER_ACCESS_FLAG_WRITE) && !pd->writable)
+ fail("can not map a read-only buffer for writing");
pd->map_count++;
off = _min_stride_calc(x + pd->generic->l, pd->generic->cspace) + (pd->stride * (y + pd->generic->t));