public
Created

  • Download Gist
apc_accs.c
C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
/* {{{ my_copy_property_info */
static zend_property_info* my_copy_property_info(zend_property_info* dst, zend_property_info* src, apc_context_t* ctxt TSRMLS_DC)
{
apc_pool* pool = ctxt->pool;
 
assert(src != NULL);
 
if (!dst) {
CHECK(dst = (zend_property_info*) apc_pool_alloc(pool, sizeof(*src)));
}
 
/* Start with a bitwise copy */
memcpy(dst, src, sizeof(*src));
 
dst->name = NULL;
#if defined(ZEND_ENGINE_2) && PHP_MINOR_VERSION > 0
dst->doc_comment = NULL;
#endif
 
if (src->name) {
/* private members are stored inside property_info as a mangled
* string of the form:
* \0<classname>\0<membername>\0
*/
CHECK((dst->name = apc_string_pmemcpy((char *)src->name, src->name_length+1, pool TSRMLS_CC)));
}
 
#if defined(ZEND_ENGINE_2) && PHP_MINOR_VERSION > 0
if (src->doc_comment) {
CHECK((dst->doc_comment = apc_pmemcpy(src->doc_comment, (src->doc_comment_len + 1), pool TSRMLS_CC)));
}
#endif
 
#if defined(ZEND_ENGINE_2_5)
if (src->accs) {
int i;
 
CHECK(dst->accs = (zend_function**) apc_pool_alloc(pool, ZEND_NUM_ACCESSORS * sizeof(zend_function *)));
for (i = 0; i < ZEND_NUM_ACCESSORS; ++i) {
if (src->accs[i]) {
dst->accs[i] = my_copy_function(NULL, src->accs[i], ctxt TSRMLS_CC);
} else {
dst->accs[i] = NULL;
}
}
}
#endif
 
return dst;
}
/* }}} */
 
/* {{{ my_copy_property_info_for_execution */
static zend_property_info* my_copy_property_info_for_execution(zend_property_info* dst, zend_property_info* src, apc_context_t* ctxt TSRMLS_DC)
{
assert(src != NULL);
 
if (!dst) {
CHECK(dst = (zend_property_info*) apc_pool_alloc(ctxt->pool, sizeof(*src)));
}
 
/* Do a bitwise copy */
memcpy(dst, src, sizeof(*src));
 
#if defined(ZEND_ENGINE_2_5)
if (src->accs) {
int i;
 
dst->accs = (zend_function**) ecalloc(ZEND_NUM_ACCESSORS, sizeof(zend_function *));
for (i = 0; i < ZEND_NUM_ACCESSORS; ++i) {
if (src->accs[i]) {
dst->accs[i] = apc_copy_function_for_execution_ex(NULL, src->accs[i], ctxt TSRMLS_CC);
}
}
}
#endif
return dst;
}
/* }}} */

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.