forked from enlightenment/efl
efl/eina: fix some memleak and improve speed of eina_cow_memcpy.
SVN revision: 83375
This commit is contained in:
parent
6174b1c5cf
commit
6414b0864f
|
@ -392,6 +392,7 @@ eina_cow_write(Eina_Cow *cow,
|
||||||
#endif
|
#endif
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
ref->refcount--;
|
||||||
|
|
||||||
allocate:
|
allocate:
|
||||||
ref = eina_mempool_malloc(cow->pool, cow->total_size);
|
ref = eina_mempool_malloc(cow->pool, cow->total_size);
|
||||||
|
@ -466,17 +467,22 @@ eina_cow_memcpy(Eina_Cow *cow,
|
||||||
|
|
||||||
EINA_COW_MAGIC_CHECK(cow);
|
EINA_COW_MAGIC_CHECK(cow);
|
||||||
|
|
||||||
|
if (*dst == src) return ;
|
||||||
|
|
||||||
eina_cow_free(cow, *dst);
|
eina_cow_free(cow, *dst);
|
||||||
|
|
||||||
ref = EINA_COW_PTR_GET(src);
|
if (src != cow->default_value)
|
||||||
EINA_COW_PTR_MAGIC_CHECK(ref);
|
{
|
||||||
|
ref = EINA_COW_PTR_GET(src);
|
||||||
|
EINA_COW_PTR_MAGIC_CHECK(ref);
|
||||||
#ifndef NVALGRIND
|
#ifndef NVALGRIND
|
||||||
VALGRIND_MAKE_MEM_DEFINED(ref, sizeof (ref));
|
VALGRIND_MAKE_MEM_DEFINED(ref, sizeof (ref));
|
||||||
#endif
|
#endif
|
||||||
ref->refcount++;
|
ref->refcount++;
|
||||||
#ifndef NVALGRIND
|
#ifndef NVALGRIND
|
||||||
VALGRIND_MAKE_MEM_NOACCESS(ref, sizeof (ref));
|
VALGRIND_MAKE_MEM_NOACCESS(ref, sizeof (ref));
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
*((const void**)dst) = src;
|
*((const void**)dst) = src;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue