• Andreas Rheinhardt's avatar
    avutil/mem: Use max_alloc_size as-is · 731c7758
    Andreas Rheinhardt authored
    The size of a single allocation performed by av_malloc() or av_realloc()
    is supposed to be bounded by max_alloc_size, which defaults to INT_MAX
    and can be set by the user; yet currently this is not completely
    honoured: The actual value used is max_alloc_size - 32. How this came
    to be can only be understood historically:
    
    a) 0ecca7a4 disallowed allocations
    > INT_MAX. At that time the size parameter of av_malloc() was an
    unsigned and the commentary added ("lets disallow possible ambiguous
    cases") indicates that this was done as a precaution against calling the
    functions with negative int values. Genuinely limiting the size of
    allocations to INT_MAX doesn't seem to have been the intention given
    that at this time the memalign hack introduced in commit
    da9b170c (which when enabled increased
    the size of allocations slightly so that one can return a correctly
    aligned pointer that actually does not point to the beginning of the
    allocated buffer) was already present.
    b) Said memalign hack allocated 17 bytes more than actually desired, yet
    allocating 16 bytes more is actually enough and so this was changed in
    a9493601; this commit also replaced
    INT_MAX by INT_MAX - 16 (and made the limit therefore a limit on the size
    of the allocated buffer), but kept the comment, although there is nothing
    ambiguous about allocating (INT_MAX - 16)..INT_MAX.
    c) 13dfce3d then increased 16 to 32 for
    AVX, 6b4c0be5 replaced INT_MAX by
    MAX_MALLOC_SIZE (which was of course defined to be INT_MAX) and
    5a8e9942 added max_alloc_size and made
    it user-selectable.
    d) 4fb311c8 then dropped the memalign
    hack, yet it kept the -32 (probably because the comment about ambiguous
    cases was still present?), although it is no longer needed at all after
    this commit. Therefore this commit removes it and uses max_alloc_size
    directly.
    Signed-off-by: 's avatarAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
    731c7758
Name
Last commit
Last update
compat Loading commit data...
doc Loading commit data...
ffbuild Loading commit data...
fftools Loading commit data...
libavcodec Loading commit data...
libavdevice Loading commit data...
libavfilter Loading commit data...
libavformat Loading commit data...
libavresample Loading commit data...
libavutil Loading commit data...
libpostproc Loading commit data...
libswresample Loading commit data...
libswscale Loading commit data...
presets Loading commit data...
tests Loading commit data...
tools Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.mailmap Loading commit data...
.travis.yml Loading commit data...
CONTRIBUTING.md Loading commit data...
COPYING.GPLv2 Loading commit data...
COPYING.GPLv3 Loading commit data...
COPYING.LGPLv2.1 Loading commit data...
COPYING.LGPLv3 Loading commit data...
CREDITS Loading commit data...
Changelog Loading commit data...
INSTALL.md Loading commit data...
LICENSE.md Loading commit data...
MAINTAINERS Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
RELEASE Loading commit data...
configure Loading commit data...