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

Unified Diff: base/process/memory_mac.mm

Issue 23455061: Add sk_calloc and sk_calloc_throw to SkMemory_new_handler.cpp. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: stray whitespace 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 side-by-side diff with in-line comments
Download patch
Index: base/process/memory_mac.mm
diff --git a/base/process/memory_mac.mm b/base/process/memory_mac.mm
index dd30e704c8ffc0d98ed17b1b0706db625490e324..1c21707e096abe5a825f8a9035b947cec67cf2ec 100644
--- a/base/process/memory_mac.mm
+++ b/base/process/memory_mac.mm
@@ -108,7 +108,7 @@ class ThreadLocalBooleanAutoReset {
};
base::LazyInstance<ThreadLocalBoolean>::Leaky
- g_unchecked_malloc = LAZY_INSTANCE_INITIALIZER;
+ g_unchecked_alloc = LAZY_INSTANCE_INITIALIZER;
// NOTE(shess): This is called when the malloc library noticed that the heap
// is fubar. Avoid calls which will re-enter the malloc library.
@@ -120,7 +120,7 @@ void CrMallocErrorBreak() {
// to the OOM killer. The EBADF case comes up because the malloc library
// attempts to log to ASL (syslog) before calling this code, which fails
// accessing a Unix-domain socket because of sandboxing.
- if (errno == ENOMEM || (errno == EBADF && g_unchecked_malloc.Get().Get()))
+ if (errno == ENOMEM || (errno == EBADF && g_unchecked_alloc.Get().Get()))
return;
// A unit test checks this error message, so it needs to be in release builds.
@@ -491,13 +491,24 @@ void* UncheckedMalloc(size_t size) {
if (g_old_malloc) {
#if ARCH_CPU_32_BITS
ScopedClearErrno clear_errno;
- ThreadLocalBooleanAutoReset flag(g_unchecked_malloc.Pointer(), true);
+ ThreadLocalBooleanAutoReset flag(g_unchecked_alloc.Pointer(), true);
#endif // ARCH_CPU_32_BITS
return g_old_malloc(malloc_default_zone(), size);
}
return malloc(size);
}
+void* UncheckedCalloc(size_t num_items, size_t size) {
+ if (g_old_calloc) {
+#if ARCH_CPU_32_BITS
+ ScopedClearErrno clear_errno;
+ ThreadLocalBooleanAutoReset flag(g_unchecked_alloc.Pointer(), true);
+#endif // ARCH_CPU_32_BITS
+ return g_old_calloc(malloc_default_zone(), num_items, size);
+ }
+ return calloc(num_items, size);
+}
+
void EnableTerminationOnOutOfMemory() {
if (g_oom_killer_enabled)
return;

Powered by Google App Engine
This is Rietveld 408576698