[Bug] VS2015 + vectorcall = crash?
От: okman Беларусь https://searchinform.ru/
Дата: 15.09.16 07:08
Оценка: 11 (2)
Привет!

Обнаружил в Visual C++ 2015 странное поведение. Баг?

#include <cstdio>

#define CALLING_CONV __vectorcall

struct parent {
    virtual ~parent() {}
    virtual void CALLING_CONV func() = 0;
};

struct child : parent {
    void CALLING_CONV func() { printf("Hello!\r\n"); }
};

int main()
{
    parent * p = new child();
    void (CALLING_CONV parent::*Pfn)() = &parent::func;
    (p->*Pfn)();
    delete p;
    return 0;
}


На строке '(p->*Pfn)();' программа вылетает. Если заменить __vectorcall на любой другой
calling convention (__cdecl, __stdcall, __fastcall, __thiscall), то все ок.

Visual Studio Professional 2015
Version 14.0.24720.00 Update 1

Конфигурация сборки — Debug или Release под платформу x86 (на x64 воспроизведения нет).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.