@@ -1815,6 +1815,7 @@ MarshalInfo::MarshalInfo(Module* pModule,
18151815 break ;
18161816
18171817 case ELEMENT_TYPE_I1:
1818+ case ELEMENT_TYPE_U1:
18181819 if (!(nativeType == NATIVE_TYPE_I1 || nativeType == NATIVE_TYPE_U1 || nativeType == NATIVE_TYPE_DEFAULT))
18191820 {
18201821 m_resID = IDS_EE_BADMARSHAL_I1;
@@ -1823,16 +1824,8 @@ MarshalInfo::MarshalInfo(Module* pModule,
18231824 m_type = MARSHAL_TYPE_GENERIC_1;
18241825 break ;
18251826
1826- case ELEMENT_TYPE_U1:
1827- if (!(nativeType == NATIVE_TYPE_U1 || nativeType == NATIVE_TYPE_I1 || nativeType == NATIVE_TYPE_DEFAULT))
1828- {
1829- m_resID = IDS_EE_BADMARSHAL_I1;
1830- IfFailGoto (E_FAIL, lFail);
1831- }
1832- m_type = MARSHAL_TYPE_GENERIC_U1;
1833- break ;
1834-
18351827 case ELEMENT_TYPE_I2:
1828+ case ELEMENT_TYPE_U2:
18361829 if (!(nativeType == NATIVE_TYPE_I2 || nativeType == NATIVE_TYPE_U2 || nativeType == NATIVE_TYPE_DEFAULT))
18371830 {
18381831 m_resID = IDS_EE_BADMARSHAL_I2;
@@ -1841,16 +1834,8 @@ MarshalInfo::MarshalInfo(Module* pModule,
18411834 m_type = MARSHAL_TYPE_GENERIC_2;
18421835 break ;
18431836
1844- case ELEMENT_TYPE_U2:
1845- if (!(nativeType == NATIVE_TYPE_U2 || nativeType == NATIVE_TYPE_I2 || nativeType == NATIVE_TYPE_DEFAULT))
1846- {
1847- m_resID = IDS_EE_BADMARSHAL_I2;
1848- IfFailGoto (E_FAIL, lFail);
1849- }
1850- m_type = MARSHAL_TYPE_GENERIC_U2;
1851- break ;
1852-
18531837 case ELEMENT_TYPE_I4:
1838+ case ELEMENT_TYPE_U4:
18541839 switch (nativeType)
18551840 {
18561841 case NATIVE_TYPE_I4:
@@ -1871,38 +1856,9 @@ MarshalInfo::MarshalInfo(Module* pModule,
18711856 m_type = MARSHAL_TYPE_GENERIC_4;
18721857 break ;
18731858
1874- case ELEMENT_TYPE_U4:
1875- switch (nativeType)
1876- {
1877- case NATIVE_TYPE_I4:
1878- case NATIVE_TYPE_U4:
1879- case NATIVE_TYPE_DEFAULT:
1880- break ;
1881-
1882- #ifdef FEATURE_COMINTEROP
1883- case NATIVE_TYPE_ERROR:
1884- m_fErrorNativeType = TRUE ;
1885- break ;
1886- #endif // FEATURE_COMINTEROP
1887-
1888- default :
1889- m_resID = IDS_EE_BADMARSHAL_I4;
1890- IfFailGoto (E_FAIL, lFail);
1891- }
1892- m_type = MARSHAL_TYPE_GENERIC_4;
1893- break ;
1894-
18951859 case ELEMENT_TYPE_I8:
1896- if (!(nativeType == NATIVE_TYPE_I8 || nativeType == NATIVE_TYPE_U8 || nativeType == NATIVE_TYPE_DEFAULT))
1897- {
1898- m_resID = IDS_EE_BADMARSHAL_I8;
1899- IfFailGoto (E_FAIL, lFail);
1900- }
1901- m_type = MARSHAL_TYPE_GENERIC_8;
1902- break ;
1903-
19041860 case ELEMENT_TYPE_U8:
1905- if (!(nativeType == NATIVE_TYPE_U8 || nativeType == NATIVE_TYPE_I8 || nativeType == NATIVE_TYPE_DEFAULT))
1861+ if (!(nativeType == NATIVE_TYPE_I8 || nativeType == NATIVE_TYPE_U8 || nativeType == NATIVE_TYPE_DEFAULT))
19061862 {
19071863 m_resID = IDS_EE_BADMARSHAL_I8;
19081864 IfFailGoto (E_FAIL, lFail);
@@ -1911,6 +1867,7 @@ MarshalInfo::MarshalInfo(Module* pModule,
19111867 break ;
19121868
19131869 case ELEMENT_TYPE_I:
1870+ case ELEMENT_TYPE_U:
19141871 // Technically the "native int" and "native uint" types aren't supported in the WinRT scenario,
19151872 // but we need to not block ourselves from using them to enable accurate managed->native marshalling of
19161873 // projected types such as NotifyCollectionChangedEventArgs and NotifyPropertyChangedEventArgs.
@@ -1923,17 +1880,6 @@ MarshalInfo::MarshalInfo(Module* pModule,
19231880 m_type = (sizeof (LPVOID) == 4 ? MARSHAL_TYPE_GENERIC_4 : MARSHAL_TYPE_GENERIC_8);
19241881 break ;
19251882
1926- case ELEMENT_TYPE_U:
1927-
1928- if (!(nativeType == NATIVE_TYPE_UINT || nativeType == NATIVE_TYPE_INT || nativeType == NATIVE_TYPE_DEFAULT))
1929- {
1930- m_resID = IDS_EE_BADMARSHAL_I;
1931- IfFailGoto (E_FAIL, lFail);
1932- }
1933- m_type = (sizeof (LPVOID) == 4 ? MARSHAL_TYPE_GENERIC_4 : MARSHAL_TYPE_GENERIC_8);
1934- break ;
1935-
1936-
19371883 case ELEMENT_TYPE_R4:
19381884 if (!(nativeType == NATIVE_TYPE_R4 || nativeType == NATIVE_TYPE_DEFAULT))
19391885 {
0 commit comments