1
0
Fork 0
forked from lthn/blockchain

intentional memory leak just to prove concept on ios

This commit is contained in:
cryptozoidberg 2020-05-14 22:05:36 +02:00
parent 4159a528ff
commit f5df96f444
No known key found for this signature in database
GPG key ID: 22DEB97A54C6FDEC

View file

@ -44,12 +44,17 @@ namespace epee
const static global_regexp_critical_section gregexplock;
inline const boost::regex* build_regexp(const char* p, boost::regex::flag_type f)
{
return new boost::regex(p, f);
}
#define STATIC_REGEXP_EXPR_1(var_name, xpr_text, reg_exp_flags) \
static volatile uint32_t regexp_initialized_1 = 0;\
volatile uint32_t local_is_initialized_1 = regexp_initialized_1;\
if(!local_is_initialized_1)\
gregexplock.get_lock().lock();\
static const boost::regex var_name(xpr_text , reg_exp_flags);\
static const boost::regex& var_name = *build_regexp(xpr_text, reg_exp_flags);\
if(!local_is_initialized_1)\
{\
boost::interprocess::ipcdetail::atomic_write32(&regexp_initialized_1, 1);\
@ -61,19 +66,32 @@ namespace epee
volatile uint32_t local_is_initialized_2 = regexp_initialized_2;\
if(!local_is_initialized_2)\
gregexplock.get_lock().lock().lock();\
static const boost::regex var_name(xpr_text , reg_exp_flags);\
static const boost::regex& var_name = *build_regexp(xpr_text, reg_exp_flags);\
if(!local_is_initialized_2)\
{\
boost::interprocess::ipcdetail::atomic_write32(&regexp_initialized_2, 1);\
gregexplock.get_lock().lock().unlock();\
}
// #define STATIC_REGEXP_EXPR_2(var_name, xpr_text, reg_exp_flags) \
// static volatile uint32_t regexp_initialized_2 = 0;\
// volatile uint32_t local_is_initialized_2 = regexp_initialized_2;\
// if(!local_is_initialized_2)\
// gregexplock.get_lock().lock().lock();\
// static const boost::regex var_name(xpr_text , reg_exp_flags);\
// if(!local_is_initialized_2)\
// {\
// boost::interprocess::ipcdetail::atomic_write32(&regexp_initialized_2, 1);\
// gregexplock.get_lock().lock().unlock();\
// }
#define STATIC_REGEXP_EXPR_3(var_name, xpr_text, reg_exp_flags) \
static volatile uint32_t regexp_initialized_3 = 0;\
volatile uint32_t local_is_initialized_3 = regexp_initialized_3;\
if(!local_is_initialized_3)\
gregexplock.get_lock().lock().lock();\
static const boost::regex var_name(xpr_text , reg_exp_flags);\
static const boost::regex& var_name = *build_regexp(xpr_text, reg_exp_flags);\
if(!local_is_initialized_3)\
{\
boost::interprocess::ipcdetail::atomic_write32(&regexp_initialized_3, 1);\