add simple port of memory APIs, to be used as a template for other platforms
authorreed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Mon, 4 May 2009 19:24:56 +0000 (19:24 +0000)
committerreed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Mon, 4 May 2009 19:24:56 +0000 (19:24 +0000)
that may want to add new_handler logic or other hooks.

git-svn-id: http://skia.googlecode.com/svn/trunk@167 2bbb7eff-a529-9590-31e7-b0007b416f81

src/ports/SkMemory_malloc.cpp [new file with mode: 0644]

diff --git a/src/ports/SkMemory_malloc.cpp b/src/ports/SkMemory_malloc.cpp
new file mode 100644 (file)
index 0000000..b10ef70
--- /dev/null
@@ -0,0 +1,45 @@
+#include "SkTypes.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+void sk_throw() {
+    SkASSERT(!"sk_throw");
+    abort();
+}
+
+void sk_out_of_memory(void) {
+    SkASSERT(!"sk_out_of_memory");
+    abort();
+}
+
+void* sk_malloc_throw(size_t size) {
+    return sk_malloc_flags(size, SK_MALLOC_THROW);
+}
+
+void* sk_realloc_throw(void* addr, size_t size) {
+    void* p = realloc(addr, size);
+    if (size == 0) {
+        return p;
+    }
+    if (p == NULL) {
+        sk_throw();
+    }
+    return p;
+}
+
+void sk_free(void* p) {
+    if (p) {
+        free(p);
+    }
+}
+
+void* sk_malloc_flags(size_t size, unsigned flags) {
+    void* p = malloc(size);
+    if (p == NULL) {
+        if (flags & SK_MALLOC_THROW) {
+            sk_throw();
+        }
+    }
+    return p;
+}
+