755 {
757 DBCSDecoder dBCSDecoder = (DBCSDecoder)baseDecoder;
762 bool flag = false;
763 DecoderFallbackBuffer decoderFallbackBuffer = null;
764 DecoderFallbackBufferHelper decoderFallbackBufferHelper = new DecoderFallbackBufferHelper(decoderFallbackBuffer);
765 if (dBCSDecoder != null && dBCSDecoder.bLeftOver > 0)
766 {
768 {
769 if (!dBCSDecoder.MustFlush)
770 {
771 return 0;
772 }
773 decoderFallbackBuffer = dBCSDecoder.FallbackBuffer;
774 decoderFallbackBufferHelper = new DecoderFallbackBufferHelper(decoderFallbackBuffer);
775 decoderFallbackBufferHelper.InternalInitialize(
bytes, ptr4);
776 byte[] bytes2 = new byte[1] { dBCSDecoder.bLeftOver };
777 if (!decoderFallbackBufferHelper.InternalFallback(bytes2,
bytes, ref
chars))
778 {
780 }
781 dBCSDecoder.bLeftOver = 0;
782 return (
int)(
chars - ptr3);
783 }
784 int num = dBCSDecoder.bLeftOver << 8;
788 if (c == '\0' && num != 0)
789 {
790 decoderFallbackBuffer = dBCSDecoder.FallbackBuffer;
791 decoderFallbackBufferHelper = new DecoderFallbackBufferHelper(decoderFallbackBuffer);
792 decoderFallbackBufferHelper.InternalInitialize(ptr2 -
byteCount, ptr4);
793 byte[] bytes3 = new byte[2]
794 {
795 (byte)(num >> 8),
796 (byte)num
797 };
798 if (!decoderFallbackBufferHelper.InternalFallback(bytes3,
bytes, ref
chars))
799 {
801 }
802 }
803 else
804 {
806 {
808 }
810 }
811 }
813 {
817 if (c2 == '\ufffe')
818 {
820 {
821 num2 <<= 8;
825 }
826 else
827 {
828 if (dBCSDecoder != null && !dBCSDecoder.MustFlush)
829 {
830 flag = true;
831 dBCSDecoder.bLeftOver = (byte)num2;
832 break;
833 }
834 c2 = '\0';
835 }
836 }
837 if (c2 == '\0' && num2 != 0)
838 {
839 if (decoderFallbackBuffer == null)
840 {
841 decoderFallbackBuffer = ((dBCSDecoder !=
null) ? dBCSDecoder.FallbackBuffer : base.
DecoderFallback.CreateFallbackBuffer());
842 decoderFallbackBufferHelper = new DecoderFallbackBufferHelper(decoderFallbackBuffer);
843 decoderFallbackBufferHelper.InternalInitialize(ptr2 -
byteCount, ptr4);
844 }
845 byte[]
array = ((num2 >= 256) ?
new byte[2]
846 {
847 (byte)(num2 >> 8),
848 (byte)num2
849 } : new byte[1] { (byte)num2 });
850 if (!decoderFallbackBufferHelper.InternalFallback(
array,
bytes, ref
chars))
851 {
853 decoderFallbackBufferHelper.InternalReset();
855 break;
856 }
857 continue;
858 }
860 {
862 if (num2 >= 256)
863 {
865 }
867 break;
868 }
870 }
871 if (dBCSDecoder != null)
872 {
873 if (!flag)
874 {
875 dBCSDecoder.bLeftOver = 0;
876 }
877 dBCSDecoder.m_bytesUsed = (int)(
bytes - ptr);
878 }
879 return (
int)(
chars - ptr3);
880 }
void CheckMemorySection()
unsafe char * mapBytesToUnicode
void ThrowCharsOverflow()
DecoderFallback DecoderFallback