@@ -38,6 +38,7 @@ static const char mysqlnd_malloc_name[] = "_mysqlnd_malloc";
38
38
static const char mysqlnd_calloc_name [] = "_mysqlnd_calloc" ;
39
39
static const char mysqlnd_realloc_name [] = "_mysqlnd_realloc" ;
40
40
static const char mysqlnd_free_name [] = "_mysqlnd_free" ;
41
+ static const char mysqlnd_pememdup_name [] = "_mysqlnd_pememdup" ;
41
42
static const char mysqlnd_pestrndup_name [] = "_mysqlnd_pestrndup" ;
42
43
static const char mysqlnd_pestrdup_name [] = "_mysqlnd_pestrdup" ;
43
44
@@ -73,7 +74,7 @@ PHPAPI const char * mysqlnd_debug_std_no_trace_funcs[] =
73
74
#define FAKE_PTR (p ) (collect_memory_statistics && (p)? (((char *)(p)) + sizeof(size_t)) : (p))
74
75
75
76
/* {{{ _mysqlnd_emalloc */
76
- void * _mysqlnd_emalloc (size_t size MYSQLND_MEM_D )
77
+ static void * _mysqlnd_emalloc (size_t size MYSQLND_MEM_D )
77
78
{
78
79
void * ret ;
79
80
zend_bool collect_memory_statistics = MYSQLND_G (collect_memory_statistics );
@@ -113,7 +114,7 @@ void * _mysqlnd_emalloc(size_t size MYSQLND_MEM_D)
113
114
114
115
115
116
/* {{{ _mysqlnd_pemalloc */
116
- void * _mysqlnd_pemalloc (size_t size , zend_bool persistent MYSQLND_MEM_D )
117
+ static void * _mysqlnd_pemalloc (size_t size , zend_bool persistent MYSQLND_MEM_D )
117
118
{
118
119
void * ret ;
119
120
zend_bool collect_memory_statistics = MYSQLND_G (collect_memory_statistics );
@@ -156,7 +157,7 @@ void * _mysqlnd_pemalloc(size_t size, zend_bool persistent MYSQLND_MEM_D)
156
157
157
158
158
159
/* {{{ _mysqlnd_ecalloc */
159
- void * _mysqlnd_ecalloc (unsigned int nmemb , size_t size MYSQLND_MEM_D )
160
+ static void * _mysqlnd_ecalloc (unsigned int nmemb , size_t size MYSQLND_MEM_D )
160
161
{
161
162
void * ret ;
162
163
zend_bool collect_memory_statistics = MYSQLND_G (collect_memory_statistics );
@@ -197,7 +198,7 @@ void * _mysqlnd_ecalloc(unsigned int nmemb, size_t size MYSQLND_MEM_D)
197
198
198
199
199
200
/* {{{ _mysqlnd_pecalloc */
200
- void * _mysqlnd_pecalloc (unsigned int nmemb , size_t size , zend_bool persistent MYSQLND_MEM_D )
201
+ static void * _mysqlnd_pecalloc (unsigned int nmemb , size_t size , zend_bool persistent MYSQLND_MEM_D )
201
202
{
202
203
void * ret ;
203
204
zend_bool collect_memory_statistics = MYSQLND_G (collect_memory_statistics );
@@ -239,7 +240,7 @@ void * _mysqlnd_pecalloc(unsigned int nmemb, size_t size, zend_bool persistent M
239
240
240
241
241
242
/* {{{ _mysqlnd_erealloc */
242
- void * _mysqlnd_erealloc (void * ptr , size_t new_size MYSQLND_MEM_D )
243
+ static void * _mysqlnd_erealloc (void * ptr , size_t new_size MYSQLND_MEM_D )
243
244
{
244
245
void * ret ;
245
246
zend_bool collect_memory_statistics = MYSQLND_G (collect_memory_statistics );
@@ -280,7 +281,7 @@ void * _mysqlnd_erealloc(void *ptr, size_t new_size MYSQLND_MEM_D)
280
281
281
282
282
283
/* {{{ _mysqlnd_perealloc */
283
- void * _mysqlnd_perealloc (void * ptr , size_t new_size , zend_bool persistent MYSQLND_MEM_D )
284
+ static void * _mysqlnd_perealloc (void * ptr , size_t new_size , zend_bool persistent MYSQLND_MEM_D )
284
285
{
285
286
void * ret ;
286
287
zend_bool collect_memory_statistics = MYSQLND_G (collect_memory_statistics );
@@ -324,7 +325,7 @@ void * _mysqlnd_perealloc(void *ptr, size_t new_size, zend_bool persistent MYSQL
324
325
325
326
326
327
/* {{{ _mysqlnd_efree */
327
- void _mysqlnd_efree (void * ptr MYSQLND_MEM_D )
328
+ static void _mysqlnd_efree (void * ptr MYSQLND_MEM_D )
328
329
{
329
330
size_t free_amount = 0 ;
330
331
zend_bool collect_memory_statistics = MYSQLND_G (collect_memory_statistics );
@@ -355,7 +356,7 @@ void _mysqlnd_efree(void *ptr MYSQLND_MEM_D)
355
356
356
357
357
358
/* {{{ _mysqlnd_pefree */
358
- void _mysqlnd_pefree (void * ptr , zend_bool persistent MYSQLND_MEM_D )
359
+ static void _mysqlnd_pefree (void * ptr , zend_bool persistent MYSQLND_MEM_D )
359
360
{
360
361
size_t free_amount = 0 ;
361
362
zend_bool collect_memory_statistics = MYSQLND_G (collect_memory_statistics );
@@ -387,7 +388,7 @@ void _mysqlnd_pefree(void *ptr, zend_bool persistent MYSQLND_MEM_D)
387
388
388
389
389
390
/* {{{ _mysqlnd_malloc */
390
- void * _mysqlnd_malloc (size_t size MYSQLND_MEM_D )
391
+ static void * _mysqlnd_malloc (size_t size MYSQLND_MEM_D )
391
392
{
392
393
void * ret ;
393
394
zend_bool collect_memory_statistics = MYSQLND_G (collect_memory_statistics );
@@ -426,7 +427,7 @@ void * _mysqlnd_malloc(size_t size MYSQLND_MEM_D)
426
427
427
428
428
429
/* {{{ _mysqlnd_calloc */
429
- void * _mysqlnd_calloc (unsigned int nmemb , size_t size MYSQLND_MEM_D )
430
+ static void * _mysqlnd_calloc (unsigned int nmemb , size_t size MYSQLND_MEM_D )
430
431
{
431
432
void * ret ;
432
433
zend_bool collect_memory_statistics = MYSQLND_G (collect_memory_statistics );
@@ -465,7 +466,7 @@ void * _mysqlnd_calloc(unsigned int nmemb, size_t size MYSQLND_MEM_D)
465
466
466
467
467
468
/* {{{ _mysqlnd_realloc */
468
- void * _mysqlnd_realloc (void * ptr , size_t new_size MYSQLND_MEM_D )
469
+ static void * _mysqlnd_realloc (void * ptr , size_t new_size MYSQLND_MEM_D )
469
470
{
470
471
void * ret ;
471
472
zend_bool collect_memory_statistics = MYSQLND_G (collect_memory_statistics );
@@ -507,7 +508,7 @@ void * _mysqlnd_realloc(void *ptr, size_t new_size MYSQLND_MEM_D)
507
508
508
509
509
510
/* {{{ _mysqlnd_free */
510
- void _mysqlnd_free (void * ptr MYSQLND_MEM_D )
511
+ static void _mysqlnd_free (void * ptr MYSQLND_MEM_D )
511
512
{
512
513
size_t free_amount = 0 ;
513
514
zend_bool collect_memory_statistics = MYSQLND_G (collect_memory_statistics );
@@ -536,13 +537,40 @@ void _mysqlnd_free(void *ptr MYSQLND_MEM_D)
536
537
}
537
538
/* }}} */
538
539
539
- #define SMART_STR_START_SIZE 2048
540
- #define SMART_STR_PREALLOC 512
541
- #include "zend_smart_str.h"
540
+
541
+ /* {{{ _mysqlnd_pememdup */
542
+ static char * _mysqlnd_pememdup (const char * const ptr , size_t length , zend_bool persistent MYSQLND_MEM_D )
543
+ {
544
+ char * ret ;
545
+ zend_bool collect_memory_statistics = MYSQLND_G (collect_memory_statistics );
546
+ TRACE_ALLOC_ENTER (mysqlnd_pememdup_name );
547
+
548
+ #if PHP_DEBUG
549
+ {
550
+ char * fn = strrchr (__zend_orig_filename , PHP_DIR_SEPARATOR );
551
+ TRACE_ALLOC_INF_FMT ("file=%-15s line=%4d" , fn ? fn + 1 :__zend_orig_filename , __zend_orig_lineno );
552
+ }
553
+ #endif
554
+ TRACE_ALLOC_INF_FMT ("ptr=%p" , ptr );
555
+
556
+ ret = (persistent ) ? __zend_malloc (REAL_SIZE (length + 1 )) : _emalloc (REAL_SIZE (length + 1 ) ZEND_FILE_LINE_CC ZEND_FILE_LINE_ORIG_RELAY_CC );
557
+ {
558
+ char * dest = (char * ) FAKE_PTR (ret );
559
+ memcpy (dest , ptr , length );
560
+ }
561
+
562
+ if (collect_memory_statistics ) {
563
+ * (size_t * ) ret = length ;
564
+ MYSQLND_INC_GLOBAL_STATISTIC (persistent ? STAT_MEM_DUP_COUNT : STAT_MEM_EDUP_COUNT );
565
+ }
566
+
567
+ TRACE_ALLOC_RETURN (FAKE_PTR (ret ));
568
+ }
569
+ /* }}} */
542
570
543
571
544
572
/* {{{ _mysqlnd_pestrndup */
545
- char * _mysqlnd_pestrndup (const char * const ptr , size_t length , zend_bool persistent MYSQLND_MEM_D )
573
+ static char * _mysqlnd_pestrndup (const char * const ptr , size_t length , zend_bool persistent MYSQLND_MEM_D )
546
574
{
547
575
char * ret ;
548
576
zend_bool collect_memory_statistics = MYSQLND_G (collect_memory_statistics );
@@ -577,8 +605,13 @@ char * _mysqlnd_pestrndup(const char * const ptr, size_t length, zend_bool persi
577
605
/* }}} */
578
606
579
607
608
+ #define SMART_STR_START_SIZE 2048
609
+ #define SMART_STR_PREALLOC 512
610
+ #include "zend_smart_str.h"
611
+
612
+
580
613
/* {{{ _mysqlnd_pestrdup */
581
- char * _mysqlnd_pestrdup (const char * const ptr , zend_bool persistent MYSQLND_MEM_D )
614
+ static char * _mysqlnd_pestrdup (const char * const ptr , zend_bool persistent MYSQLND_MEM_D )
582
615
{
583
616
char * ret ;
584
617
smart_str tmp_str = {0 , 0 };
@@ -611,7 +644,7 @@ char * _mysqlnd_pestrdup(const char * const ptr, zend_bool persistent MYSQLND_ME
611
644
612
645
613
646
/* {{{ _mysqlnd_sprintf */
614
- PHPAPI int _mysqlnd_sprintf (char * * pbuf , size_t max_len , const char * format , ...)
647
+ static int _mysqlnd_sprintf (char * * pbuf , size_t max_len , const char * format , ...)
615
648
{
616
649
int len ;
617
650
va_list ap ;
@@ -624,14 +657,14 @@ PHPAPI int _mysqlnd_sprintf(char ** pbuf, size_t max_len, const char *format, ..
624
657
625
658
626
659
/* {{{ _mysqlnd_sprintf_free */
627
- PHPAPI void _mysqlnd_sprintf_free (char * p )
660
+ static void _mysqlnd_sprintf_free (char * p )
628
661
{
629
662
efree (p );
630
663
}
631
664
/* }}} */
632
665
633
666
/* {{{ _mysqlnd_vsprintf */
634
- PHPAPI int _mysqlnd_vsprintf (char * * pbuf , size_t max_len , const char * format , va_list ap )
667
+ static int _mysqlnd_vsprintf (char * * pbuf , size_t max_len , const char * format , va_list ap )
635
668
{
636
669
return vspprintf (pbuf , max_len , format , ap );
637
670
}
@@ -738,6 +771,18 @@ static void mysqlnd_zend_mm_free(void * ptr MYSQLND_MEM_D)
738
771
/* }}} */
739
772
740
773
774
+ /* {{{ mysqlnd_zend_mm_pememdup */
775
+ static char * mysqlnd_zend_mm_pememdup (const char * const ptr , size_t length , zend_bool persistent MYSQLND_MEM_D )
776
+ {
777
+ char * dest = pemalloc (length , persistent );
778
+ if (dest ) {
779
+ memcpy (dest , ptr , length );
780
+ }
781
+ return dest ;
782
+ }
783
+ /* }}} */
784
+
785
+
741
786
/* {{{ mysqlnd_zend_mm_pestrndup */
742
787
static char * mysqlnd_zend_mm_pestrndup (const char * const ptr , size_t length , zend_bool persistent MYSQLND_MEM_D )
743
788
{
@@ -771,6 +816,7 @@ PHPAPI struct st_mysqlnd_allocator_methods mysqlnd_allocator =
771
816
_mysqlnd_calloc ,
772
817
_mysqlnd_realloc ,
773
818
_mysqlnd_free ,
819
+ _mysqlnd_pememdup ,
774
820
_mysqlnd_pestrndup ,
775
821
_mysqlnd_pestrdup ,
776
822
_mysqlnd_sprintf ,
@@ -789,9 +835,10 @@ PHPAPI struct st_mysqlnd_allocator_methods mysqlnd_allocator =
789
835
mysqlnd_zend_mm_calloc ,
790
836
mysqlnd_zend_mm_realloc ,
791
837
mysqlnd_zend_mm_free ,
838
+ mysqlnd_zend_mm_pememdup ,
792
839
mysqlnd_zend_mm_pestrndup ,
793
- mysqlnd_zend_mm_pestrdup
794
- sprintf ,
840
+ mysqlnd_zend_mm_pestrdup ,
841
+ vsprintf ,
795
842
mysqlnd_zend_mm_efree ,
796
843
#endif
797
844
};
0 commit comments