@@ -1203,14 +1203,14 @@ void ddtrace_shutdown_span_sampling_limiter(void) {
1203
1203
}
1204
1204
1205
1205
// ParseBool returns the boolean value represented by the string.
1206
- // It accepts 1, t, T, True (case insensitive) , 0, f, F, False (case insensitive) .
1207
- // Any other value returns 0
1206
+ // It accepts 1, t, T, TRUE, true, True , 0, f, F, FALSE, false, False .
1207
+ // Any other value returns -1.
1208
1208
static zend_always_inline double strconv_parse_bool (zend_string * str ) {
1209
1209
// See Go's strconv.ParseBool
1210
1210
// https://cs.opensource.google/go/go/+/refs/tags/go1.21.5:src/strconv/atob.go;drc=1f137052e4a20dbd302f947b1cf34cdf4b427d65;l=10
1211
1211
size_t len = ZSTR_LEN (str );
1212
1212
if (len == 0 ) {
1213
- return 0 ;
1213
+ return -1 ;
1214
1214
}
1215
1215
1216
1216
char * s = ZSTR_VAL (str );
@@ -1228,18 +1228,18 @@ static zend_always_inline double strconv_parse_bool(zend_string *str) {
1228
1228
}
1229
1229
break ;
1230
1230
case 4 :
1231
- if (strcasecmp (s , "true" ) == 0 ) {
1231
+ if (strcmp ( s , "TRUE" ) == 0 || strcmp ( s , "True" ) == 0 || strcmp (s , "true" ) == 0 ) {
1232
1232
return 1 ;
1233
1233
}
1234
1234
break ;
1235
1235
case 5 :
1236
- if (strcasecmp (s , "false" ) == 0 ) {
1236
+ if (strcmp ( s , "FALSE" ) == 0 || strcmp ( s , "False" ) == 0 || strcmp (s , "false" ) == 0 ) {
1237
1237
return 0 ;
1238
1238
}
1239
1239
break ;
1240
1240
}
1241
1241
1242
- return 0 ;
1242
+ return -1 ;
1243
1243
}
1244
1244
1245
1245
void ddtrace_serialize_span_to_array (ddtrace_span_data * span , zval * array ) {
@@ -1365,12 +1365,17 @@ void ddtrace_serialize_span_to_array(ddtrace_span_data *span, zval *array) {
1365
1365
if (analytics_event ) {
1366
1366
zval analytics_event_as_double ;
1367
1367
if (Z_TYPE_P (analytics_event ) == IS_STRING ) {
1368
- ZVAL_DOUBLE (& analytics_event_as_double , strconv_parse_bool (Z_STR_P (analytics_event )));
1368
+ double parsed_analytics_event = strconv_parse_bool (Z_STR_P (analytics_event ));
1369
+ if (parsed_analytics_event >= 0 ) {
1370
+ ZVAL_DOUBLE (& analytics_event_as_double , parsed_analytics_event );
1371
+ zend_array * metrics = ddtrace_property_array (& span -> property_metrics );
1372
+ zend_hash_str_add_new (metrics , ZEND_STRL ("_dd1.sr.eausr" ), & analytics_event_as_double );
1373
+ }
1369
1374
} else {
1370
1375
ZVAL_DOUBLE (& analytics_event_as_double , zval_get_double (analytics_event ));
1376
+ zend_array * metrics = ddtrace_property_array (& span -> property_metrics );
1377
+ zend_hash_str_add_new (metrics , ZEND_STRL ("_dd1.sr.eausr" ), & analytics_event_as_double );
1371
1378
}
1372
- zend_array * metrics = ddtrace_property_array (& span -> property_metrics );
1373
- zend_hash_str_add_new (metrics , ZEND_STRL ("_dd1.sr.eausr" ), & analytics_event_as_double );
1374
1379
zend_hash_str_del (meta , ZEND_STRL ("analytics.event" ));
1375
1380
}
1376
1381
0 commit comments