| Index: flac/src/libFLAC/alloc.c
|
| ===================================================================
|
| --- flac/src/libFLAC/alloc.c (revision 0)
|
| +++ flac/src/libFLAC/alloc.c (revision 0)
|
| @@ -0,0 +1,59 @@
|
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include <limits.h>
|
| +#if !defined _MSC_VER
|
| +#include <stdint.h>
|
| +#endif
|
| +#include <stdlib.h>
|
| +#include "share/alloc.h"
|
| +
|
| +void *safe_malloc_(size_t size) {
|
| + return malloc(size ? size : 1);
|
| +}
|
| +
|
| +void *safe_calloc_(size_t num_items, size_t size) {
|
| + if (num_items && size)
|
| + return calloc(num_items, size);
|
| + return malloc(1);
|
| +}
|
| +
|
| +void *safe_malloc_add_2op_(size_t size1, size_t size2) {
|
| + size_t size = size1 + size2;
|
| + if (size < size1)
|
| + return NULL;
|
| +
|
| + return safe_malloc_(size);
|
| +}
|
| +
|
| +void *safe_malloc_mul_2op_(size_t size1, size_t size2) {
|
| + if (!size1 || !size2)
|
| + return malloc(1);
|
| +
|
| + if (size1 > SIZE_MAX / size2)
|
| + return NULL;
|
| +
|
| + return malloc(size1 * size2);
|
| +}
|
| +
|
| +void *safe_malloc_muladd2_(size_t size1, size_t size2, size_t size3) {
|
| + size_t size = size2 + size3;
|
| + if (size < size3)
|
| + return 0;
|
| +
|
| + if (!size1 || !size)
|
| + return malloc(1);
|
| +
|
| + return safe_malloc_mul_2op_(size1, size2);
|
| +}
|
| +
|
| +void *safe_realloc_mul_2op_(void *ptr, size_t size1, size_t size2) {
|
| + if (!size1 || !size2)
|
| + return realloc(ptr, 0);
|
| +
|
| + if (size1 > SIZE_MAX / size2)
|
| + return 0;
|
| +
|
| + return realloc(ptr, size1 * size2);
|
| +}
|
|
|
| Property changes on: flac/src/libFLAC/alloc.c
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|