@@ -74,8 +74,8 @@ namespace number_tests {
74
74
uint64_t maxulp = 0 ;
75
75
for (int i = -1075 ; i < 1024 ; ++i) {// large negative values should be zero.
76
76
double expected = pow (2 , i);
77
- auto n = sprintf (buf, " %.*e" , std::numeric_limits<double >::max_digits10 - 1 , expected);
78
- buf[n] = ' \0 ' ;
77
+ size_t n = snprintf (buf, sizeof (buf) , " %.*e" , std::numeric_limits<double >::max_digits10 - 1 , expected);
78
+ if (n >= sizeof (buf)) { abort (); }
79
79
fflush (NULL );
80
80
auto [actual, error] = parser.parse (buf, n).get <double >();
81
81
if (error) { std::cerr << error << std::endl; return false ; }
@@ -167,8 +167,8 @@ namespace number_tests {
167
167
char buf[1024 ];
168
168
simdjson::dom::parser parser;
169
169
for (int i = -1000000 ; i <= 308 ; ++i) {// large negative values should be zero.
170
- auto n = sprintf (buf," 1e%d" , i);
171
- buf[n] = ' \0 ' ;
170
+ size_t n = snprintf (buf, sizeof (buf), " 1e%d" , i);
171
+ if (n >= sizeof (buf)) { abort (); }
172
172
fflush (NULL );
173
173
174
174
auto [actual, error] = parser.parse (buf, n).get <double >();
@@ -275,19 +275,22 @@ namespace document_tests {
275
275
std::vector<std::string> data;
276
276
char buf[1024 ];
277
277
for (size_t i = 0 ; i < n_records; ++i) {
278
- auto n = sprintf (buf,
278
+ size_t n = snprintf (buf, sizeof (buf) ,
279
279
" {\" id\" : %zu, \" name\" : \" name%zu\" , \" gender\" : \" %s\" , "
280
280
" \" school\" : {\" id\" : %zu, \" name\" : \" school%zu\" }}" ,
281
281
i, i, (i % 2 ) ? " male" : " female" , i % 10 , i % 10 );
282
+ if (n >= sizeof (buf)) { abort (); }
282
283
data.emplace_back (std::string (buf, n));
283
284
}
284
285
for (size_t i = 0 ; i < n_records; ++i) {
285
- auto n = sprintf (buf, " {\" counter\" : %f, \" array\" : [%s]}" , static_cast <double >(i) * 3.1416 ,
286
- (i % 2 ) ? " true" : " false" );
286
+ size_t n = snprintf (buf, sizeof (buf), " {\" counter\" : %f, \" array\" : [%s]}" , static_cast <double >(i) * 3.1416 ,
287
+ (i % 2 ) ? " true" : " false" );
288
+ if (n >= sizeof (buf)) { abort (); }
287
289
data.emplace_back (std::string (buf, n));
288
290
}
289
291
for (size_t i = 0 ; i < n_records; ++i) {
290
- auto n = sprintf (buf, " {\" number\" : %e}" , static_cast <double >(i) * 10000.31321321 );
292
+ size_t n = snprintf (buf, sizeof (buf), " {\" number\" : %e}" , static_cast <double >(i) * 10000.31321321 );
293
+ if (n >= sizeof (buf)) { abort (); }
291
294
data.emplace_back (std::string (buf, n));
292
295
}
293
296
data.emplace_back (std::string (" true" ));
@@ -396,10 +399,12 @@ namespace document_stream_tests {
396
399
std::string data;
397
400
char buf[1024 ];
398
401
for (size_t i = 0 ; i < n_records; ++i) {
399
- auto n = sprintf (buf,
402
+ size_t n = snprintf (buf,
403
+ sizeof (buf),
400
404
" {\" id\" : %zu, \" name\" : \" name%zu\" , \" gender\" : \" %s\" , "
401
405
" \" ete\" : {\" id\" : %zu, \" name\" : \" eventail%zu\" }}" ,
402
406
i, i, (i % 2 ) ? " homme" : " femme" , i % 10 , i % 10 );
407
+ if (n >= sizeof (buf)) { abort (); }
403
408
data += std::string (buf, n);
404
409
}
405
410
for (size_t batch_size = 1000 ; batch_size < 2000 ; batch_size += (batch_size>1050 ?10 :1 )) {
@@ -444,10 +449,12 @@ namespace document_stream_tests {
444
449
std::string data;
445
450
char buf[1024 ];
446
451
for (size_t i = 0 ; i < n_records; ++i) {
447
- auto n = sprintf (buf,
452
+ size_t n = snprintf (buf,
453
+ sizeof (buf),
448
454
" {\" id\" : %zu, \" name\" : \" name%zu\" , \" gender\" : \" %s\" , "
449
455
" \" été\" : {\" id\" : %zu, \" name\" : \" éventail%zu\" }}" ,
450
456
i, i, (i % 2 ) ? " ⺃" : " ⺕" , i % 10 , i % 10 );
457
+ if (n >= sizeof (buf)) { abort (); }
451
458
data += std::string (buf, n);
452
459
}
453
460
for (size_t batch_size = 1000 ; batch_size < 2000 ; batch_size += (batch_size>1050 ?10 :1 )) {
0 commit comments