Repository navigation
Commit bae642c
authored
host_env: Fix wcslen, leverage NonNull<T> more (#8386)
`strlen` was both unused and unneeded. Rust's `CStr` handles the length
for us without needing to call into `libc` manually or implementing our
own version of `strlen`. Our `strlen` implemented a fallback that
incremented and dereferenced a pointer to check for NUL. This is slower
than what `libc` usually does. For example, `musl` operates on words
instead of individual bytes. This implementation also caused UB if the
caller passed in a null pointer.
`wcslen` is similar. The currently implementation can cause UB for null
pointers. It's also slow from the same reason mentioned above. Luckily,
the widestring crate can handle this for us. The crate panics on null
pointers, so using it was a good excuse to use NonNull in more places.1 parent a49e8f9 commit bae642c
4 files changed
Lines changed: 80 additions & 105 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
20 | 21 | | |
21 | 22 | | |
22 | 23 | | |
| |||
54 | 55 | | |
55 | 56 | | |
56 | 57 | | |
57 | | - | |
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
6 | 7 | | |
7 | 8 | | |
8 | 9 | | |
| |||
36 | 37 | | |
37 | 38 | | |
38 | 39 | | |
| 40 | + | |
39 | 41 | | |
40 | 42 | | |
41 | 43 | | |
| |||
392 | 394 | | |
393 | 395 | | |
394 | 396 | | |
395 | | - | |
396 | | - | |
397 | | - | |
398 | | - | |
399 | | - | |
400 | | - | |
401 | | - | |
402 | | - | |
403 | | - | |
404 | | - | |
405 | | - | |
406 | | - | |
407 | | - | |
408 | | - | |
409 | | - | |
410 | | - | |
411 | | - | |
412 | | - | |
413 | 397 | | |
414 | 398 | | |
415 | 399 | | |
416 | | - | |
417 | | - | |
418 | | - | |
419 | | - | |
420 | | - | |
421 | | - | |
| 400 | + | |
| 401 | + | |
422 | 402 | | |
423 | 403 | | |
424 | 404 | | |
| |||
1309 | 1289 | | |
1310 | 1290 | | |
1311 | 1291 | | |
1312 | | - | |
1313 | | - | |
1314 | | - | |
| 1292 | + | |
1315 | 1293 | | |
| 1294 | + | |
| 1295 | + | |
1316 | 1296 | | |
1317 | 1297 | | |
1318 | 1298 | | |
| |||
2272 | 2252 | | |
2273 | 2253 | | |
2274 | 2254 | | |
2275 | | - | |
2276 | | - | |
| 2255 | + | |
2277 | 2256 | | |
2278 | 2257 | | |
2279 | 2258 | | |
| |||
2292 | 2271 | | |
2293 | 2272 | | |
2294 | 2273 | | |
2295 | | - | |
2296 | | - | |
2297 | | - | |
2298 | | - | |
| 2274 | + | |
| 2275 | + | |
| 2276 | + | |
| 2277 | + | |
2299 | 2278 | | |
2300 | 2279 | | |
2301 | 2280 | | |
| |||
2313 | 2292 | | |
2314 | 2293 | | |
2315 | 2294 | | |
2316 | | - | |
2317 | | - | |
2318 | | - | |
2319 | | - | |
2320 | | - | |
| 2295 | + | |
| 2296 | + | |
2321 | 2297 | | |
2322 | 2298 | | |
2323 | 2299 | | |
2324 | 2300 | | |
2325 | 2301 | | |
2326 | | - | |
2327 | | - | |
| 2302 | + | |
| 2303 | + | |
2328 | 2304 | | |
2329 | 2305 | | |
2330 | 2306 | | |
| |||
2348 | 2324 | | |
2349 | 2325 | | |
2350 | 2326 | | |
2351 | | - | |
| 2327 | + | |
2352 | 2328 | | |
2353 | | - | |
2354 | | - | |
| 2329 | + | |
2355 | 2330 | | |
2356 | 2331 | | |
2357 | | - | |
| 2332 | + | |
2358 | 2333 | | |
2359 | 2334 | | |
2360 | 2335 | | |
| |||
2364 | 2339 | | |
2365 | 2340 | | |
2366 | 2341 | | |
2367 | | - | |
| 2342 | + | |
2368 | 2343 | | |
2369 | 2344 | | |
2370 | 2345 | | |
| |||
2414 | 2389 | | |
2415 | 2390 | | |
2416 | 2391 | | |
2417 | | - | |
| 2392 | + | |
2418 | 2393 | | |
2419 | 2394 | | |
2420 | 2395 | | |
2421 | 2396 | | |
2422 | 2397 | | |
2423 | 2398 | | |
2424 | | - | |
| 2399 | + | |
2425 | 2400 | | |
2426 | 2401 | | |
2427 | 2402 | | |
| |||
2436 | 2411 | | |
2437 | 2412 | | |
2438 | 2413 | | |
2439 | | - | |
2440 | | - | |
2441 | | - | |
2442 | | - | |
| 2414 | + | |
| 2415 | + | |
| 2416 | + | |
2443 | 2417 | | |
2444 | 2418 | | |
2445 | 2419 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | | - | |
| 9 | + | |
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
| 21 | + | |
20 | 22 | | |
21 | 23 | | |
22 | 24 | | |
| |||
238 | 240 | | |
239 | 241 | | |
240 | 242 | | |
241 | | - | |
| 243 | + | |
242 | 244 | | |
243 | 245 | | |
244 | 246 | | |
245 | 247 | | |
246 | 248 | | |
247 | 249 | | |
248 | 250 | | |
249 | | - | |
| 251 | + | |
250 | 252 | | |
251 | 253 | | |
252 | 254 | | |
253 | | - | |
| 255 | + | |
254 | 256 | | |
255 | 257 | | |
256 | 258 | | |
257 | 259 | | |
258 | 260 | | |
259 | 261 | | |
260 | 262 | | |
261 | | - | |
262 | | - | |
263 | | - | |
264 | | - | |
265 | | - | |
266 | | - | |
267 | | - | |
268 | | - | |
269 | 263 | | |
270 | 264 | | |
271 | 265 | | |
| |||
471 | 465 | | |
472 | 466 | | |
473 | 467 | | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
474 | 477 | | |
475 | 478 | | |
476 | 479 | | |
477 | 480 | | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
478 | 484 | | |
479 | | - | |
480 | | - | |
481 | | - | |
482 | | - | |
483 | | - | |
| 485 | + | |
| 486 | + | |
484 | 487 | | |
485 | 488 | | |
486 | 489 | | |
| |||
489 | 492 | | |
490 | 493 | | |
491 | 494 | | |
492 | | - | |
493 | | - | |
494 | | - | |
495 | | - | |
496 | | - | |
497 | | - | |
498 | | - | |
499 | | - | |
500 | | - | |
501 | | - | |
502 | | - | |
503 | | - | |
504 | | - | |
505 | | - | |
506 | | - | |
507 | | - | |
508 | | - | |
509 | | - | |
510 | | - | |
511 | | - | |
512 | | - | |
513 | | - | |
514 | | - | |
515 | | - | |
516 | | - | |
517 | | - | |
518 | | - | |
519 | | - | |
520 | | - | |
521 | | - | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
522 | 524 | | |
523 | 525 | | |
524 | 526 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
524 | 524 | | |
525 | 525 | | |
526 | 526 | | |
527 | | - | |
528 | | - | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
529 | 531 | | |
530 | | - | |
531 | | - | |
532 | | - | |
533 | | - | |
| 532 | + | |
534 | 533 | | |
535 | 534 | | |
536 | 535 | | |
| |||
0 commit comments