Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(170)

Side by Side Diff: src/ports/SkMemory_malloc.cpp

Issue 24251008: Add sk_calloc. Remove SkMemory_stdlib, which seems unused. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: use sk_out_of_memory Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/core/SkMemory_stdlib.cpp ('k') | src/ports/SkMemory_mozalloc.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 #include "SkTypes.h" 8 #include "SkTypes.h"
9 #include <stdio.h> 9 #include <stdio.h>
10 #include <stdlib.h> 10 #include <stdlib.h>
11 11
12 static inline void* throwOnFailure(size_t size, void* p) {
13 if (size > 0 && p == NULL) {
14 // If we've got a NULL here, the only reason we should have failed is ru nning out of RAM.
15 sk_out_of_memory();
16 }
17 return p;
18 }
19
12 void sk_throw() { 20 void sk_throw() {
13 SkDEBUGFAIL("sk_throw"); 21 SkDEBUGFAIL("sk_throw");
14 abort(); 22 abort();
15 } 23 }
16 24
17 void sk_out_of_memory(void) { 25 void sk_out_of_memory(void) {
18 SkDEBUGFAIL("sk_out_of_memory"); 26 SkDEBUGFAIL("sk_out_of_memory");
19 abort(); 27 abort();
20 } 28 }
21 29
22 void* sk_malloc_throw(size_t size) { 30 void* sk_malloc_throw(size_t size) {
23 return sk_malloc_flags(size, SK_MALLOC_THROW); 31 return sk_malloc_flags(size, SK_MALLOC_THROW);
24 } 32 }
25 33
26 void* sk_realloc_throw(void* addr, size_t size) { 34 void* sk_realloc_throw(void* addr, size_t size) {
27 void* p = realloc(addr, size); 35 return throwOnFailure(size, realloc(addr, size));
28 if (size == 0) {
29 return p;
30 }
31 if (p == NULL) {
32 sk_throw();
33 }
34 return p;
35 } 36 }
36 37
37 void sk_free(void* p) { 38 void sk_free(void* p) {
38 if (p) { 39 if (p) {
39 free(p); 40 free(p);
40 } 41 }
41 } 42 }
42 43
43 void* sk_malloc_flags(size_t size, unsigned flags) { 44 void* sk_malloc_flags(size_t size, unsigned flags) {
44 void* p = malloc(size); 45 void* p = malloc(size);
45 if (p == NULL) { 46 if (flags & SK_MALLOC_THROW) {
46 if (flags & SK_MALLOC_THROW) { 47 return throwOnFailure(size, p);
47 sk_throw(); 48 } else {
48 } 49 return p;
49 } 50 }
50 return p;
51 } 51 }
52
53 void* sk_calloc(size_t size) {
54 return calloc(size, 1);
55 }
56
57 void* sk_calloc_throw(size_t size) {
58 return throwOnFailure(size, sk_calloc(size));
59 }
OLDNEW
« no previous file with comments | « src/core/SkMemory_stdlib.cpp ('k') | src/ports/SkMemory_mozalloc.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698