diff options
author | Dr.Smile <vabnick@gmail.com> | 2021-02-22 19:28:03 +0300 |
---|---|---|
committer | Dr.Smile <vabnick@gmail.com> | 2021-02-22 19:28:03 +0300 |
commit | ccfe196a25c9ca1792228769d123c3c98dce0747 (patch) | |
tree | b5fda113adb53069e4e26928ee9f52f0bbaeb304 | |
parent | 82b225b3d6653091d028b39d561d185ed76a7be5 (diff) | |
download | libass-ccfe196a25c9ca1792228769d123c3c98dce0747.tar.bz2 libass-ccfe196a25c9ca1792228769d123c3c98dce0747.tar.xz |
cache: replace memcpy() in key move functions with assignment
-rw-r--r-- | libass/ass_cache.c | 43 |
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; } |