From b48909780b09c1408a7dd85f047b1c8fa37c4b3b Mon Sep 17 00:00:00 2001 From: Erik de Castro Lopo Date: Sun, 26 Feb 2012 20:00:36 +1100 Subject: [PATCH] Fix a couple 'inlining failed' warning messages. --- include/share/alloc.h | 9 +----- src/libFLAC/include/private/memory.h | 1 + src/libFLAC/memory.c | 9 ++++++ src/share/grabbag/Makefile.am | 1 + src/share/grabbag/alloc.c | 43 ++++++++++++++++++++++++++++ 5 files changed, 55 insertions(+), 8 deletions(-) create mode 100644 src/share/grabbag/alloc.c diff --git a/include/share/alloc.h b/include/share/alloc.h index a74d0707..8a53bbe5 100644 --- a/include/share/alloc.h +++ b/include/share/alloc.h @@ -110,14 +110,7 @@ static inline void *safe_malloc_add_4op_(size_t size1, size_t size2, size_t size return safe_malloc_(size4); } -static inline void *safe_malloc_mul_2op_(size_t size1, size_t size2) -{ - if(!size1 || !size2) - return malloc(1); /* malloc(0) is undefined; FLAC src convention is to always allocate */ - if(size1 > SIZE_MAX / size2) - return 0; - return malloc(size1*size2); -} +void *safe_malloc_mul_2op_(size_t size1, size_t size2) ; static inline void *safe_malloc_mul_3op_(size_t size1, size_t size2, size_t size3) { diff --git a/src/libFLAC/include/private/memory.h b/src/libFLAC/include/private/memory.h index f37e5163..fecba6f4 100644 --- a/src/libFLAC/include/private/memory.h +++ b/src/libFLAC/include/private/memory.h @@ -52,5 +52,6 @@ FLAC__bool FLAC__memory_alloc_aligned_unsigned_array(size_t elements, unsigned * #ifndef FLAC__INTEGER_ONLY_LIBRARY FLAC__bool FLAC__memory_alloc_aligned_real_array(size_t elements, FLAC__real **unaligned_pointer, FLAC__real **aligned_pointer); #endif +void *safe_malloc_mul_2op_(size_t size1, size_t size2); #endif diff --git a/src/libFLAC/memory.c b/src/libFLAC/memory.c index eb26279e..8870efe9 100644 --- a/src/libFLAC/memory.c +++ b/src/libFLAC/memory.c @@ -219,3 +219,12 @@ FLAC__bool FLAC__memory_alloc_aligned_real_array(size_t elements, FLAC__real **u } #endif + +void *safe_malloc_mul_2op_(size_t size1, size_t size2) +{ + if(!size1 || !size2) + return malloc(1); /* malloc(0) is undefined; FLAC src convention is to always allocate */ + if(size1 > SIZE_MAX / size2) + return 0; + return malloc(size1*size2); +} diff --git a/src/share/grabbag/Makefile.am b/src/share/grabbag/Makefile.am index 879b1551..c59ddca6 100644 --- a/src/share/grabbag/Makefile.am +++ b/src/share/grabbag/Makefile.am @@ -7,6 +7,7 @@ INCLUDES = -I$(top_srcdir)/include noinst_LTLIBRARIES = libgrabbag.la libgrabbag_la_SOURCES = \ + alloc.c \ cuesheet.c \ file.c \ picture.c \ diff --git a/src/share/grabbag/alloc.c b/src/share/grabbag/alloc.c new file mode 100644 index 00000000..53381b83 --- /dev/null +++ b/src/share/grabbag/alloc.c @@ -0,0 +1,43 @@ +/* alloc - Convenience routines for safely allocating memory + * Copyright (C) 2007,2008,2009 Josh Coalson + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of the Xiph.org Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include + +#include "share/alloc.h" + +void *safe_malloc_mul_2op_(size_t size1, size_t size2) +{ + if(!size1 || !size2) + return malloc(1); /* malloc(0) is undefined; FLAC src convention is to always allocate */ + if(size1 > SIZE_MAX / size2) + return 0; + return malloc(size1*size2); +}