@@ -121,7 +121,7 @@ static nruserfn_t* nr_func_hashmap_lookup_internal(nr_func_hashmap_t* hashmap, n
121
121
return NULL ;
122
122
}
123
123
124
- static nruserfn_t * nr_func_hashmap_update_internal (nr_func_hashmap_t * hashmap , nr_func_hashmap_key_t * key ) {
124
+ static nruserfn_t * nr_func_hashmap_update_internal (nr_func_hashmap_t * hashmap , nr_func_hashmap_key_t * key , bool * created ) {
125
125
size_t hash ;
126
126
nr_func_bucket_t * bucket ;
127
127
nruserfn_t * wraprec ;
@@ -132,9 +132,15 @@ static nruserfn_t* nr_func_hashmap_update_internal(nr_func_hashmap_t* hashmap, n
132
132
133
133
hash = nr_func_hashmap_hash_key (hashmap -> log2_num_buckets , key );
134
134
if (nr_func_hashmap_fetch_internal (hashmap , hash , key , & bucket )) {
135
+ if (created ) {
136
+ * created = false;
137
+ }
135
138
return bucket -> wraprec ;
136
139
}
137
140
141
+ if (created ) {
142
+ * created = true;
143
+ }
138
144
return nr_func_hashmap_add_internal (hashmap , hash , key );
139
145
}
140
146
@@ -388,6 +394,7 @@ nruserfn_t* nr_php_user_instrument_wraprec_hashmap_add(const char* namestr, size
388
394
nr_scope_hashmap_key_t scope_key = {0 };
389
395
nr_func_hashmap_key_t func_key = {0 };
390
396
nr_func_hashmap_t * funcs_ht = NULL ;
397
+ bool is_new_wraprec = false;
391
398
nruserfn_t * wraprec = NULL ;
392
399
393
400
@@ -410,24 +417,26 @@ nruserfn_t* nr_php_user_instrument_wraprec_hashmap_add(const char* namestr, size
410
417
return NULL ;
411
418
}
412
419
413
- wraprec = nr_func_hashmap_update_internal (funcs_ht , & func_key );
420
+ wraprec = nr_func_hashmap_update_internal (funcs_ht , & func_key , & is_new_wraprec );
414
421
415
422
if (NULL == wraprec ) {
416
423
return NULL ;
417
424
}
418
425
419
- wraprec -> funcname = nr_strndup (func_key .name , func_key .name_len );
420
- wraprec -> funcnamelen = func_key .name_len ;
421
- wraprec -> funcnameLC = nr_string_to_lowercase (wraprec -> funcname );
422
- if (func_key .is_method ) {
423
- wraprec -> classname = nr_strndup (scope_key .name , scope_key .name_len );
424
- wraprec -> classnamelen = scope_key .name_len ;
425
- wraprec -> classnameLC = nr_string_to_lowercase (wraprec -> classname );
426
- wraprec -> is_method = 1 ;
427
- }
426
+ if (is_new_wraprec ) {
427
+ wraprec -> funcname = nr_strndup (func_key .name , func_key .name_len );
428
+ wraprec -> funcnamelen = func_key .name_len ;
429
+ wraprec -> funcnameLC = nr_string_to_lowercase (wraprec -> funcname );
430
+ if (func_key .is_method ) {
431
+ wraprec -> classname = nr_strndup (scope_key .name , scope_key .name_len );
432
+ wraprec -> classnamelen = scope_key .name_len ;
433
+ wraprec -> classnameLC = nr_string_to_lowercase (wraprec -> classname );
434
+ wraprec -> is_method = 1 ;
435
+ }
428
436
429
- wraprec -> supportability_metric = nr_txn_create_fn_supportability_metric (
430
- wraprec -> funcname , wraprec -> classname );
437
+ wraprec -> supportability_metric = nr_txn_create_fn_supportability_metric (
438
+ wraprec -> funcname , wraprec -> classname );
439
+ }
431
440
432
441
return wraprec ;
433
442
}
0 commit comments