@@ -1159,7 +1159,7 @@ internal static object[] GetCustomAttributes(RuntimeType type, RuntimeType caTyp
1159
1159
1160
1160
while ( type != ( RuntimeType ) typeof ( object ) && type != null )
1161
1161
{
1162
- AddCustomAttributes ( ref result , type . GetRuntimeModule ( ) , type . MetadataToken , caType , mustBeInheritable , ref result ) ;
1162
+ AddCustomAttributes ( ref result , type . GetRuntimeModule ( ) , type . MetadataToken , caType , mustBeInheritable , result ) ;
1163
1163
mustBeInheritable = true ;
1164
1164
type = ( type . BaseType as RuntimeType ) ! ;
1165
1165
}
@@ -1202,7 +1202,7 @@ internal static object[] GetCustomAttributes(RuntimeMethodInfo method, RuntimeTy
1202
1202
1203
1203
while ( method != null )
1204
1204
{
1205
- AddCustomAttributes ( ref result , method . GetRuntimeModule ( ) , method . MetadataToken , caType , mustBeInheritable , ref result ) ;
1205
+ AddCustomAttributes ( ref result , method . GetRuntimeModule ( ) , method . MetadataToken , caType , mustBeInheritable , result ) ;
1206
1206
mustBeInheritable = true ;
1207
1207
method = method . GetParentDefinition ( ) ! ;
1208
1208
}
@@ -1338,9 +1338,8 @@ private static object[] GetCustomAttributes(
1338
1338
RuntimeModule decoratedModule , int decoratedMetadataToken , int pcaCount , RuntimeType ? attributeFilterType )
1339
1339
{
1340
1340
RuntimeType . ListBuilder < object > attributes = new RuntimeType . ListBuilder < object > ( ) ;
1341
- RuntimeType . ListBuilder < object > _ = default ;
1342
1341
1343
- AddCustomAttributes ( ref attributes , decoratedModule , decoratedMetadataToken , attributeFilterType , false , ref _ ) ;
1342
+ AddCustomAttributes ( ref attributes , decoratedModule , decoratedMetadataToken , attributeFilterType , false , new RuntimeType . ListBuilder < object > ( ) ) ;
1344
1343
1345
1344
bool useObjectArray = attributeFilterType == null || attributeFilterType . IsValueType || attributeFilterType . ContainsGenericParameters ;
1346
1345
RuntimeType arrayType = useObjectArray ? ( RuntimeType ) typeof ( object ) : attributeFilterType ! ;
@@ -1356,7 +1355,9 @@ private static object[] GetCustomAttributes(
1356
1355
private static void AddCustomAttributes (
1357
1356
ref RuntimeType . ListBuilder < object > attributes ,
1358
1357
RuntimeModule decoratedModule , int decoratedMetadataToken ,
1359
- RuntimeType ? attributeFilterType , bool mustBeInheritable , ref RuntimeType . ListBuilder < object > derivedAttributes )
1358
+ RuntimeType ? attributeFilterType , bool mustBeInheritable ,
1359
+ // The derivedAttributes list must be passed by value so that it is not modified with the discovered attributes
1360
+ RuntimeType . ListBuilder < object > derivedAttributes )
1360
1361
{
1361
1362
CustomAttributeRecord [ ] car = CustomAttributeData . GetCustomAttributeRecords ( decoratedModule , decoratedMetadataToken ) ;
1362
1363
0 commit comments