Mark H Weaver <[email protected]> skribis: > Maxim Cournoyer <[email protected]> writes: > >> [email protected] (Ludovic Courtès) writes: >> >>> Maxim Cournoyer <[email protected]> skribis: >>> >>>> I've encountered the following crash when trying to use substitute on a >>>> file which contains NUL characters: >>> >>> Yes, that’s because Guile’s ‘regexp-exec’ simply wraps libc’s ‘regexec’, >>> which does not handle NULs. >>> >>> We should consider switching to the pure-Scheme SRFI-115: >>> >>> https://srfi.schemers.org/srfi-115/srfi-115.html >> >> This looks good, and I started looking into porting `substitute' to it, >> but quickly noticed it doesn't seem to be implemented in Guile yet?
ISTR that the reference implementation works fine on Guile. > Indeed. SRFI-115 for Guile is on my TODO list, although it might be > better to wait until after we switch to using UTF-8 encoding internally > for strings, since that will drastically affect the implementation of > any efficient regexp matcher on Scheme strings. Indeed, though I suppose it doesn’t matter much for the cases where ‘substitute*’ is used? > Anyway, 'substitute*' is to be used only on text files, and NUL bytes > are not a valid textual character. So, I think that this case is > outside of what 'substitute*' is meant to do, and therefore not a bug in > 'substitute*', although of course a more graceful error would surely be > preferable. Yes, that’s also a good point. So yeah, I think it may be good “eventually” to switch to SRFI-115, but that’s not urgent. Thoughts? Ludo’.
