aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorbfredl <bjorn.linse@gmail.com>2026-09-07 13:39:56 +0200
committerbfredl <bjorn.linse@gmail.com>2026-09-08 12:46:24 +0200
commit97660307f5ac10d01febd7ffba63dfeb24d10351 (patch)
tree233bdcd77cd7acf854b7ebde8ceddad6bfe9f149 /scripts
parent45b645718c804b66394231f85f52413218fdafbd (diff)
downloadrneovim-97660307f5ac10d01febd7ffba63dfeb24d10351.tar.gz
rneovim-97660307f5ac10d01febd7ffba63dfeb24d10351.tar.bz2
rneovim-97660307f5ac10d01febd7ffba63dfeb24d10351.zip
fix(strings): non fatal errors for [NULL] safety in vim_snprintf
context: vim_snprintf provides a "portable" replacement for a system vsnprintf(). However we rely on system vsnprintf() in places. This is quite arbitrary. I want to use system vsnprintf() only, and reduce the machinery in string.c for typval printf only, which will delet a lot of duplicated code. The biggest hurdle here is not "portably" (we only support sane c runtimes) but the following discrepancy: standard libc printf() considers NULL args to %s to be undefined behavior strictly while vim_snprintf() _defacto_ allows this by replacement to "[NULL]" IMO, this should be seen as "graceful" error handling (nicer than crashing on the user), not a valid means to have the string "[NULL]" intentionally be shoved in the users face. more robust code should explicitly check for NULL and replace it with a _appropriate_ fallback for the situation, depending on what a NULL string actually means in the context (unnamed buffer? anonymous namespace? global augroup?) soo, this PR provides the most _gently_ incremental nudge towards considering this case again as an error one could possible imagine. If sanitizers are complied in, this minor incursion gets printed into the sanitizers' log as a "report-and-continue" error with a traceback. This doesn't annoy the end user or "stop the world" in the test suite, but the CI will see the reported error and fail the build, just like other non-fatal CI errors.
Diffstat (limited to 'scripts')
0 files changed, 0 insertions, 0 deletions