Skip to content

Commit

Permalink
Stop using system STL since it is no longer supported
Browse files Browse the repository at this point in the history
  • Loading branch information
topjohnwu committed Dec 25, 2018
1 parent 8d210b5 commit 23f8f35
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 2 deletions.
2 changes: 1 addition & 1 deletion native/jni/Application.mk
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ APP_ABI := armeabi-v7a x86
APP_CFLAGS := -Oz -std=gnu11 \
-DMAGISK_VERSION="${MAGISK_VERSION}" -DMAGISK_VER_CODE=${MAGISK_VER_CODE}
APP_CPPFLAGS := -std=c++14
APP_STL := system
APP_STL := none
APP_PLATFORM := android-16

ifdef MAGISK_DEBUG
Expand Down
34 changes: 34 additions & 0 deletions native/jni/include/new
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#ifndef __NEW__
#define __NEW__

#include <stddef.h>
#include <stdlib.h>

extern "C++" {

namespace std {
using ::ptrdiff_t;
using ::size_t;
struct nothrow_t {};
extern const nothrow_t nothrow;
} // namespace std

void* operator new(std::size_t);
void* operator new[](std::size_t);
void operator delete(void*);
void operator delete[](void*);
void* operator new(std::size_t, const std::nothrow_t&);
void* operator new[](std::size_t, const std::nothrow_t&);
void operator delete(void*, const std::nothrow_t&);
void operator delete[](void*, const std::nothrow_t&);

inline void* operator new(std::size_t, void* p) { return p; }
inline void* operator new[](std::size_t, void* p) { return p; }

// these next two are not really required, since exceptions are off
inline void operator delete(void*, void*) { }
inline void operator delete[](void*, void*) { }

} // extern C++

#endif // __NEW__
2 changes: 1 addition & 1 deletion native/jni/systemproperties/Android.mk
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE:= libsystemproperties
LOCAL_C_INCLUDES := $(LIBSYSTEMPROPERTIES)
LOCAL_C_INCLUDES := jni/include $(LIBSYSTEMPROPERTIES)
LOCAL_SRC_FILES := \
context_node.cpp \
contexts_serialized.cpp \
Expand Down
1 change: 1 addition & 0 deletions native/jni/utils/Android.mk
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ include $(CLEAR_VARS)
LOCAL_MODULE:= libutils
LOCAL_C_INCLUDES := jni/include $(LIBUTILS)
LOCAL_SRC_FILES := \
new.cpp \
file.cpp \
misc.cpp \
selinux.cpp \
Expand Down
11 changes: 11 additions & 0 deletions native/jni/utils/new.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#include <new>
#include <stdlib.h>

void* operator new(std::size_t s) { return malloc(s); }
void* operator new[](std::size_t s) { return malloc(s); }
void operator delete(void *p) { free(p); }
void operator delete[](void *p) { free(p); }
void* operator new(std::size_t s, const std::nothrow_t&) { return malloc(s); }
void* operator new[](std::size_t s, const std::nothrow_t&) { return malloc(s); }
void operator delete(void *p, const std::nothrow_t&) { free(p); }
void operator delete[](void *p, const std::nothrow_t&) { free(p); }

0 comments on commit 23f8f35

Please sign in to comment.