[FFmpeg-devel] [PATCH 1/4] lavu: add simple array implementation

Michael Niedermayer michaelni at gmx.at
Fri Mar 21 00:03:44 CET 2014


On Thu, Mar 20, 2014 at 10:44:41PM +0100, Lukasz Marek wrote:
> >>  mem.c |   13 +++++++++++++
> >>  mem.h |   19 +++++++++++++++++--
> >>  2 files changed, 30 insertions(+), 2 deletions(-)
> >>7fad1be9083fcaef4435fa0273f79bceca98821b  0001-lavu-mem-add-av_dynarray_add_nofree-function.patch
> >> From 4cadb3328ba018b37c5dfe05a637b50a262151c6 Mon Sep 17 00:00:00 2001
> >>From: Lukasz Marek <lukasz.m.luki at gmail.com>
> >>Date: Tue, 25 Feb 2014 01:06:06 +0100
> >>Subject: [PATCH] lavu/mem: add av_dynarray_add_nofree function
> >>
> >>av_dynarray_add_nofree function have similar functionality
> >>as existing av_dynarray_add, but it doesn't deallocate memory
> >>on fails.
> >>
> >>TODO: minor bump and update doc/APIChanges
> >>
> >>Signed-off-by: Lukasz Marek <lukasz.m.luki at gmail.com>
> >>---
> >>  libavutil/mem.c |   13 +++++++++++++
> >>  libavutil/mem.h |   19 +++++++++++++++++--
> >>  2 files changed, 30 insertions(+), 2 deletions(-)
> >>
> >>diff --git a/libavutil/mem.c b/libavutil/mem.c
> >>index 7206ddc..b9b5742 100644
> >>--- a/libavutil/mem.c
> >>+++ b/libavutil/mem.c
> >>@@ -278,6 +278,19 @@ void *av_memdup(const void *p, size_t size)
> >>      return ptr;
> >>  }
> >>
> >>+int av_dynarray_add_nofree(void *tab_ptr, int *nb_ptr, void *elem)
> >>+{
> >
> >>+    intptr_t *tab = *(intptr_t**)tab_ptr;
> >
> >undefined behavior (strict aliasing violation)
> 
> 
> Can you tell how it is wrong?

yes sure

quoting the spec:

7 An object shall have its stored value accessed only by an lvalue expression that has one of
  the following types:76)
  - a type compatible with the effective type of the object,
  - a qualified version of a type compatible with the effective type of the object,
  - a type that is the signed or unsigned type corresponding to the effective type of the
      object,
  - a type that is the signed or unsigned type corresponding to a qualified version of the
      effective type of the object,
  - an aggregate or union type that includes one of the aforementioned types among its
      members (including, recursively, a member of a subaggregate or contained union), or
  - a character type.


i dont think intptr_t and some pointer are compatible types
but maybe iam missing something

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

The real ebay dictionary, page 1
"Used only once"    - "Some unspecified defect prevented a second use"
"In good condition" - "Can be repaird by experienced expert"
"As is" - "You wouldnt want it even if you were payed for it, if you knew ..."
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20140321/94a69ee1/attachment.asc>


More information about the ffmpeg-devel mailing list