581 {
583 EncoderFallbackBuffer encoderFallbackBuffer = null;
588 EncoderFallbackBufferHelper encoderFallbackBufferHelper = new EncoderFallbackBufferHelper(encoderFallbackBuffer);
589 char c = '\0';
590 if (encoder != null)
591 {
594 encoderFallbackBufferHelper = new EncoderFallbackBufferHelper(encoderFallbackBuffer);
595 encoderFallbackBufferHelper.InternalInitialize(
chars, ptr, encoder, _setEncoder: true);
597 {
599 }
600 if (c > '\0')
601 {
602 encoderFallbackBufferHelper.InternalFallback(c, ref
chars);
603 }
604 }
605 char c2;
606 while ((c2 = ((encoderFallbackBuffer !=
null) ? encoderFallbackBufferHelper.InternalGetNextChar() :
'\0')) != 0 ||
chars < ptr)
607 {
608 if (c2 == '\0')
609 {
612 }
614 if (num == 0 && c2 != 0)
615 {
616 if (encoderFallbackBuffer == null)
617 {
618 encoderFallbackBuffer = base.EncoderFallback.CreateFallbackBuffer();
619 encoderFallbackBufferHelper = new EncoderFallbackBufferHelper(encoderFallbackBuffer);
620 encoderFallbackBufferHelper.InternalInitialize(ptr -
charCount, ptr, encoder, _setEncoder: true);
621 }
622 encoderFallbackBufferHelper.InternalFallback(c2, ref
chars);
623 continue;
624 }
625 if (num >= 256)
626 {
627 if (
bytes + 1 >= ptr4)
628 {
629 if (encoderFallbackBuffer == null || !encoderFallbackBufferHelper.bFallingBack)
630 {
632 }
633 else
634 {
635 encoderFallbackBuffer.MovePrevious();
636 }
638 break;
639 }
640 *
bytes = (byte)(num >> 8);
642 }
643 else if (
bytes >= ptr4)
644 {
645 if (encoderFallbackBuffer == null || !encoderFallbackBufferHelper.bFallingBack)
646 {
648 }
649 else
650 {
651 encoderFallbackBuffer.MovePrevious();
652 }
654 break;
655 }
656 *
bytes = (byte)(num & 0xFFu);
658 }
659 if (encoder != null)
660 {
661 if (encoderFallbackBuffer != null && !encoderFallbackBufferHelper.bUsedEncoder)
662 {
663 encoder.charLeftOver = '\0';
664 }
665 encoder.m_charsUsed = (int)(
chars - ptr2);
666 }
667 return (
int)(
bytes - ptr3);
668 }
static string Argument_EncoderFallbackNotEmpty
static string Format(string resourceFormat, object p1)
void CheckMemorySection()
unsafe ushort * mapUnicodeToBytes
new EncoderFallback Fallback
new EncoderFallbackBuffer FallbackBuffer
void ThrowBytesOverflow()
override string EncodingName