summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDr.Smile <vabnick@gmail.com>2021-02-22 19:28:03 +0300
committerDr.Smile <vabnick@gmail.com>2021-02-22 19:28:03 +0300
commitccfe196a25c9ca1792228769d123c3c98dce0747 (patch)
treeb5fda113adb53069e4e26928ee9f52f0bbaeb304
parent82b225b3d6653091d028b39d561d185ed76a7be5 (diff)
downloadlibass-ccfe196a25c9ca1792228769d123c3c98dce0747.tar.bz2
libass-ccfe196a25c9ca1792228769d123c3c98dce0747.tar.xz
cache: replace memcpy() in key move functions with assignment
-rw-r--r--libass/ass_cache.c43
1 files changed, 23 insertions, 20 deletions
diff --git a/libass/ass_cache.c b/libass/ass_cache.c
index 70c0113..3ce4aff 100644
--- a/libass/ass_cache.c
+++ b/libass/ass_cache.c
@@ -40,11 +40,11 @@
// font cache
static bool font_key_move(void *dst, void *src)
{
- if (!dst)
+ ASS_FontDesc *d = dst, *s = src;
+ if (!d)
return true;
- ASS_FontDesc *d = dst, *s = dst;
- memcpy(dst, src, sizeof(ASS_FontDesc));
+ *d = *s;
d->family.str = ass_copy_string(s->family);
return d->family.str;
}
@@ -70,11 +70,11 @@ const CacheDesc font_cache_desc = {
// bitmap cache
static bool bitmap_key_move(void *dst, void *src)
{
- BitmapHashKey *k = src;
- if (dst)
- memcpy(dst, src, sizeof(BitmapHashKey));
+ BitmapHashKey *d = dst, *s = src;
+ if (d)
+ *d = *s;
else
- ass_cache_dec_ref(k->outline);
+ ass_cache_dec_ref(s->outline);
return true;
}
@@ -124,16 +124,17 @@ static bool composite_compare(void *a, void *b)
static bool composite_key_move(void *dst, void *src)
{
- if (dst) {
- memcpy(dst, src, sizeof(CompositeHashKey));
+ CompositeHashKey *d = dst, *s = src;
+ if (d) {
+ *d = *s;
return true;
}
- CompositeHashKey *k = src;
- for (size_t i = 0; i < k->bitmap_count; i++) {
- ass_cache_dec_ref(k->bitmaps[i].bm);
- ass_cache_dec_ref(k->bitmaps[i].bm_o);
+
+ for (size_t i = 0; i < s->bitmap_count; i++) {
+ ass_cache_dec_ref(s->bitmaps[i].bm);
+ ass_cache_dec_ref(s->bitmaps[i].bm_o);
}
- free(k->bitmaps);
+ free(s->bitmaps);
return true;
}
@@ -201,12 +202,13 @@ static bool outline_compare(void *a, void *b)
static bool outline_key_move(void *dst, void *src)
{
OutlineHashKey *d = dst, *s = src;
- if (!dst) {
+ if (!d) {
if (s->type == OUTLINE_GLYPH)
ass_cache_dec_ref(s->u.glyph.font);
return true;
}
- memcpy(dst, src, sizeof(OutlineHashKey));
+
+ *d = *s;
if (s->type == OUTLINE_DRAWING) {
d->u.drawing.text.str = ass_copy_string(s->u.drawing.text);
return d->u.drawing.text.str;
@@ -253,11 +255,12 @@ const CacheDesc outline_cache_desc = {
// glyph metric cache
static bool glyph_metrics_key_move(void *dst, void *src)
{
- if (!dst)
+ GlyphMetricsHashKey *d = dst, *s = src;
+ if (!d)
return true;
- memcpy(dst, src, sizeof(GlyphMetricsHashKey));
- GlyphMetricsHashKey *k = src;
- ass_cache_inc_ref(k->font);
+
+ *d = *s;
+ ass_cache_inc_ref(s->font);
return true;
}