| Index: src/core/SkTemplatesPriv.h
|
| diff --git a/src/core/SkTemplatesPriv.h b/src/core/SkTemplatesPriv.h
|
| index 79ae6093358993917df7cf3261ef4be93a6063e8..c7d61da7cf80e917e5708774b8f43c22763725db 100644
|
| --- a/src/core/SkTemplatesPriv.h
|
| +++ b/src/core/SkTemplatesPriv.h
|
| @@ -20,6 +20,12 @@
|
|
|
| #define SK_PLACEMENT_NEW_ARGS(result, classname, storage, storageSize, args) \
|
| result = SkNEW_ARGS(classname, args)
|
| +
|
| + #define SK_PLACEMENT_SAFE_NEW(result, classname, storage, storageSize) \
|
| + result = SkNEW(classname)
|
| +
|
| + #define SK_PLACEMENT_SAFE_NEW_ARGS(result, classname, storage, storageSize, args) \
|
| + result = SkNEW_ARGS(classname, args)
|
| #else
|
| #include <new>
|
| #define SK_PLACEMENT_NEW(result, classname, storage, storagesize) \
|
| @@ -43,6 +49,22 @@
|
| else \
|
| result = SkNEW_ARGS(classname, args); \
|
| } while (0)
|
| +
|
| + #define SK_PLACEMENT_SAFE_NEW(result, classname, storage, storagesize) \
|
| + do { \
|
| + if (storagesize >= sizeof(classname)) \
|
| + result = new(storage) classname; \
|
| + else \
|
| + result = SkNEW(classname); \
|
| + } while (0)
|
| +
|
| + #define SK_PLACEMENT_SAFE_NEW_ARGS(result, classname, storage, storagesize, args) \
|
| + do { \
|
| + if (storagesize >= sizeof(classname)) \
|
| + result = new(storage) classname args; \
|
| + else \
|
| + result = SkNEW_ARGS(classname, args); \
|
| + } while (0)
|
| #endif
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
|
|