File tree Expand file tree Collapse file tree 1 file changed +16
-4
lines changed Expand file tree Collapse file tree 1 file changed +16
-4
lines changed Original file line number Diff line number Diff line change @@ -2037,21 +2037,33 @@ HRESULT CLR_RT_ExecutionEngine::InitializeLocals(
20372037 // copy over to parameter
20382038 genericInstance.InitializeFromIndex (genericTSIndex);
20392039
2040- CLR_RT_SignatureParser sp ;
2041- sp .Initialize_TypeSpec (assembly, assembly->GetTypeSpec (genericInstance.TypeSpec ()));
2040+ CLR_RT_SignatureParser parser ;
2041+ parser .Initialize_TypeSpec (assembly, assembly->GetTypeSpec (genericInstance.TypeSpec ()));
20422042
20432043 CLR_RT_SignatureParser::Element element;
2044- NANOCLR_CHECK_HRESULT (sp .Advance (element));
2044+ NANOCLR_CHECK_HRESULT (parser .Advance (element));
20452045
20462046 // if this is another generic instance, need to advance to get the type
20472047 if (dt == DATATYPE_GENERICINST)
20482048 {
2049- NANOCLR_CHECK_HRESULT (sp .Advance (element));
2049+ NANOCLR_CHECK_HRESULT (parser .Advance (element));
20502050 }
20512051
20522052 cls = element.Class ;
20532053 dt = element.DataType ;
20542054
2055+ // consume the generic parameters from the signature
2056+ for (int paramIndex = 0 ; paramIndex < parser.GenParamCount ; paramIndex++)
2057+ {
2058+ NANOCLR_CHECK_HRESULT (parser.Advance (element));
2059+ }
2060+
2061+ // need to advance the signature to consume it
2062+ while (parser.Signature != sig)
2063+ {
2064+ sig++;
2065+ }
2066+
20552067 goto done;
20562068 }
20572069
You can’t perform that action at this time.
0 commit comments