mirror of
https://github.com/mpv-player/mpv
synced 2025-03-07 14:47:53 +00:00
Something like "char *s = ...; isdigit(s[0]);" triggers undefined behavior, because char can be signed, and thus s[0] can be a negative value. The is*() functions require unsigned char _or_ EOF. EOF is a special value outside of unsigned char range, thus the argument to the is*() functions can't be a char. This undefined behavior can actually trigger crashes if the implementation of these functions e.g. uses lookup tables, which are then indexed with out-of-range values. Replace all <ctype.h> uses with our own custom mp_is*() functions added with misc/ctype.h. As a bonus, these functions are locale-independent. (Although currently, we _require_ C locale for other reasons.) |
||
---|---|---|
.. | ||
resolve | ||
ai_alsa1x.c | ||
ai_oss.c | ||
ai_sndio.c | ||
audio_in.c | ||
audio_in.h | ||
cache_file.c | ||
cache.c | ||
cookies.c | ||
cookies.h | ||
discnav.h | ||
dvb_tune.c | ||
dvb_tune.h | ||
dvbin.h | ||
frequencies.c | ||
frequencies.h | ||
rar.c | ||
rar.h | ||
stream_avdevice.c | ||
stream_bluray.c | ||
stream_cdda.c | ||
stream_dvb.c | ||
stream_dvd_common.c | ||
stream_dvd_common.h | ||
stream_dvd.c | ||
stream_dvdnav.c | ||
stream_edl.c | ||
stream_file.c | ||
stream_lavf.c | ||
stream_memory.c | ||
stream_mf.c | ||
stream_null.c | ||
stream_pvr.c | ||
stream_rar.c | ||
stream_smb.c | ||
stream_tv.c | ||
stream.c | ||
stream.h | ||
tv.c | ||
tv.h | ||
tvi_def.h | ||
tvi_dummy.c | ||
tvi_v4l2.c |