Commit 07d30af
committed
Correct the behavior and return value of snprintf()
According to C99 7.19.6.5, it explicitly defines the behavior and
return value of snprintf(). However, the implementation should
consider the following description:
- If n is zero, nothing is written.
- Writes at most n bytes, including the null character.
- On success, the return value should be the length of the
entire converted string even if n is insufficient to store it.
While validating snprintf() in the built-in C library, it was found
that the behavior and/or the return value did not match the above
description.
Therefore, these changes fix the implementation of snprintf() to
comply with the specification, and the related test cases are also
adjusted to verify the behavior and return value of snprintf().1 parent ff83f01 commit 07d30af
File tree
6 files changed
+191
-48
lines changed- lib
- tests
- snapshots
6 files changed
+191
-48
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
210 | 210 | | |
211 | 211 | | |
212 | 212 | | |
213 | | - | |
214 | | - | |
215 | | - | |
216 | | - | |
217 | | - | |
218 | | - | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
219 | 261 | | |
220 | | - | |
221 | | - | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
222 | 290 | | |
223 | 291 | | |
224 | 292 | | |
| |||
249 | 317 | | |
250 | 318 | | |
251 | 319 | | |
252 | | - | |
| 320 | + | |
253 | 321 | | |
254 | 322 | | |
255 | 323 | | |
256 | 324 | | |
257 | 325 | | |
258 | 326 | | |
259 | 327 | | |
260 | | - | |
| 328 | + | |
261 | 329 | | |
262 | 330 | | |
263 | 331 | | |
264 | 332 | | |
265 | 333 | | |
266 | 334 | | |
267 | 335 | | |
268 | | - | |
269 | | - | |
| 336 | + | |
| 337 | + | |
270 | 338 | | |
271 | 339 | | |
272 | 340 | | |
| |||
280 | 348 | | |
281 | 349 | | |
282 | 350 | | |
| 351 | + | |
283 | 352 | | |
284 | | - | |
| 353 | + | |
285 | 354 | | |
286 | 355 | | |
287 | 356 | | |
288 | | - | |
289 | | - | |
290 | | - | |
291 | | - | |
| 357 | + | |
292 | 358 | | |
293 | 359 | | |
294 | | - | |
| 360 | + | |
295 | 361 | | |
296 | | - | |
297 | | - | |
298 | | - | |
299 | | - | |
| 362 | + | |
300 | 363 | | |
301 | | - | |
| 364 | + | |
302 | 365 | | |
303 | | - | |
304 | | - | |
| 366 | + | |
305 | 367 | | |
306 | 368 | | |
307 | 369 | | |
| |||
328 | 390 | | |
329 | 391 | | |
330 | 392 | | |
331 | | - | |
332 | | - | |
333 | | - | |
| 393 | + | |
334 | 394 | | |
335 | 395 | | |
336 | 396 | | |
337 | | - | |
338 | | - | |
| 397 | + | |
339 | 398 | | |
340 | 399 | | |
341 | 400 | | |
342 | | - | |
| 401 | + | |
343 | 402 | | |
344 | 403 | | |
345 | 404 | | |
346 | | - | |
| 405 | + | |
347 | 406 | | |
348 | 407 | | |
349 | 408 | | |
350 | | - | |
| 409 | + | |
351 | 410 | | |
352 | 411 | | |
353 | 412 | | |
354 | | - | |
355 | | - | |
| 413 | + | |
356 | 414 | | |
357 | 415 | | |
358 | 416 | | |
| |||
361 | 419 | | |
362 | 420 | | |
363 | 421 | | |
364 | | - | |
365 | | - | |
366 | | - | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
367 | 425 | | |
368 | 426 | | |
369 | 427 | | |
370 | 428 | | |
371 | 429 | | |
372 | | - | |
373 | | - | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
374 | 437 | | |
375 | 438 | | |
376 | 439 | | |
377 | 440 | | |
378 | | - | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
379 | 448 | | |
380 | 449 | | |
381 | 450 | | |
382 | 451 | | |
383 | | - | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
384 | 459 | | |
385 | 460 | | |
386 | 461 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1647 | 1647 | | |
1648 | 1648 | | |
1649 | 1649 | | |
| 1650 | + | |
| 1651 | + | |
| 1652 | + | |
| 1653 | + | |
| 1654 | + | |
1650 | 1655 | | |
1651 | 1656 | | |
1652 | 1657 | | |
| |||
1656 | 1661 | | |
1657 | 1662 | | |
1658 | 1663 | | |
1659 | | - | |
| 1664 | + | |
| 1665 | + | |
| 1666 | + | |
| 1667 | + | |
| 1668 | + | |
1660 | 1669 | | |
1661 | 1670 | | |
| 1671 | + | |
| 1672 | + | |
| 1673 | + | |
1662 | 1674 | | |
1663 | 1675 | | |
1664 | 1676 | | |
1665 | 1677 | | |
1666 | 1678 | | |
1667 | 1679 | | |
1668 | | - | |
| 1680 | + | |
| 1681 | + | |
| 1682 | + | |
| 1683 | + | |
1669 | 1684 | | |
1670 | 1685 | | |
| 1686 | + | |
| 1687 | + | |
| 1688 | + | |
1671 | 1689 | | |
1672 | 1690 | | |
1673 | 1691 | | |
1674 | 1692 | | |
1675 | 1693 | | |
1676 | 1694 | | |
| 1695 | + | |
| 1696 | + | |
| 1697 | + | |
| 1698 | + | |
| 1699 | + | |
| 1700 | + | |
| 1701 | + | |
| 1702 | + | |
| 1703 | + | |
| 1704 | + | |
| 1705 | + | |
| 1706 | + | |
| 1707 | + | |
| 1708 | + | |
| 1709 | + | |
| 1710 | + | |
| 1711 | + | |
| 1712 | + | |
| 1713 | + | |
| 1714 | + | |
| 1715 | + | |
| 1716 | + | |
| 1717 | + | |
| 1718 | + | |
| 1719 | + | |
| 1720 | + | |
| 1721 | + | |
| 1722 | + | |
| 1723 | + | |
| 1724 | + | |
| 1725 | + | |
| 1726 | + | |
| 1727 | + | |
| 1728 | + | |
| 1729 | + | |
| 1730 | + | |
| 1731 | + | |
| 1732 | + | |
| 1733 | + | |
| 1734 | + | |
| 1735 | + | |
| 1736 | + | |
| 1737 | + | |
| 1738 | + | |
| 1739 | + | |
| 1740 | + | |
| 1741 | + | |
| 1742 | + | |
| 1743 | + | |
| 1744 | + | |
1677 | 1745 | | |
1678 | 1746 | | |
1679 | 1747 | | |
| |||
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
0 commit comments