Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ UnescapeOnly()

static unsafe void System.Uri.UnescapeOnly ( char * pch,
int start,
ref int end,
char ch1,
char ch2,
char ch3 )
inlinestaticprivate

Definition at line 3244 of file Uri.cs.

3245 {
3246 if (end - start < 3)
3247 {
3248 return;
3249 }
3250 char* ptr = pch + end - 2;
3251 pch += start;
3252 char* ptr2 = null;
3253 while (pch < ptr)
3254 {
3255 if (*(pch++) != '%')
3256 {
3257 continue;
3258 }
3259 char c = UriHelper.DecodeHexChars(*(pch++), *(pch++));
3260 if (c != ch1 && c != ch2 && c != ch3)
3261 {
3262 continue;
3263 }
3264 ptr2 = pch - 2;
3265 *(ptr2 - 1) = c;
3266 while (pch < ptr)
3267 {
3268 if ((*(ptr2++) = *(pch++)) == '%')
3269 {
3270 c = UriHelper.DecodeHexChars(*(ptr2++) = *(pch++), *(ptr2++) = *(pch++));
3271 if (c == ch1 || c == ch2 || c == ch3)
3272 {
3273 ptr2 -= 2;
3274 *(ptr2 - 1) = c;
3275 }
3276 }
3277 }
3278 break;
3279 }
3280 ptr += 2;
3281 if (ptr2 == null)
3282 {
3283 return;
3284 }
3285 if (pch == ptr)
3286 {
3287 end -= (int)(pch - ptr2);
3288 return;
3289 }
3290 *(ptr2++) = *(pch++);
3291 if (pch == ptr)
3292 {
3293 end -= (int)(pch - ptr2);
3294 return;
3295 }
3296 *(ptr2++) = *(pch++);
3297 end -= (int)(pch - ptr2);
3298 }

References System.UriHelper.DecodeHexChars(), and System.start.

Referenced by System.Uri.GetCanonicalPath().