From d391ef1747cd6f624f187306632f943b21c09652 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=BB=D0=B0=D0=B4=D0=B8=D1=81=D0=BB=D0=B0=D0=B2=20?= =?UTF-8?q?=D0=A1=D1=83=D1=85=D0=BE=D0=B2?= <22411953+Vladislav4KZ@users.noreply.github.com> Date: Wed, 28 Jan 2026 22:05:59 +0000 Subject: [PATCH] public: crtlib: make COM_FixSlashes remove duplicate slashes --- public/crtlib.h | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/public/crtlib.h b/public/crtlib.h index f2ce618f..fcb526f4 100644 --- a/public/crtlib.h +++ b/public/crtlib.h @@ -331,13 +331,24 @@ static inline int Q_splitstr( char *str, int delim, void *userdata, ============ COM_FixSlashes -Changes all '\' characters into '/' characters, in place. +Changes all '\' characters into '/' characters and removes duplicate slashes, in place. ============ */ static inline void COM_FixSlashes( char *pname ) { - while(( pname = Q_strchr( pname, '\\' ))) - *pname = '/'; + char *s = pname; + int i, j; + + while(( s = Q_strchr( s, '\\' ))) + *s = '/'; + + for( i = 0, j = 0; pname[i]; i++ ) + { + if( pname[i] == '/' && pname[i+1] == '/' ) + continue; + pname[j++] = pname[i]; + } + pname[j] = 0; } #ifdef __cplusplus