2IT: мелкий баг в XmlAttributeReader
От: Sinix  
Дата: 18.07.16 19:28
Оценка: 8 (1)
Нашёл в своём коде, решил проверить остальной, нашёл

Проблема в строчке
        public XmlAttributeReader(string xmlFile)
            : this(xmlFile, Assembly.GetCallingAssembly())
        {}


Msdn:

If the method that calls the GetCallingAssembly method is expanded inline by the just-in-time (JIT) compiler, or if its caller is expanded inline, the assembly that is returned by GetCallingAssemblymay differ unexpectedly. For example, consider the following methods and assemblies:

• Method M1 in assembly A1 calls GetCallingAssembly.
• Method M2 in assembly A2 calls M1.
• Method M3 in assembly A3 calls M2.


When M1 is not inlined, GetCallingAssembly returns A2. When M1 is inlined, GetCallingAssembly returns A3. Similarly, when M2 is not inlined, GetCallingAssembly returns A2. When M2 is inlined, GetCallingAssembly returns A3.

This effect also occurs when M1 executes as a tail call from M2, or when M2 executes as a tail call from M3. You can prevent the JIT compiler from inlining the method that calls GetCallingAssembly, by applying the MethodImplAttribute attribute with the MethodImplOptions.NoInlining flag, but there is no similar mechanism for preventing tail calls.


На самом деле всё не так страшно, но MethodImpl.NoInlining поставить стоит


Надо будет ув. SergeyT идею подкинуть, он у нас эксперт по анализаторам рослина
UPD. Done.
Отредактировано 18.07.2016 19:41 Sinix . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.