(по мотивам баги 8241) В процессе работы с 1С и MS Script (jscript) возникает ситуация, когда указатель pIndex нулевой, а в него идёт запись значения. В MSDN по поводу того, может ли быть указатель нулевым, ничего не сказано: http://msdn.microsoft.com/en-us/library/windows/desktop/ms221450%28v=vs.85%29.aspx Нужно: 1. Создать тест, выясняющий, может ли быть указатель нулевым. 2. Если указатель не может быть нулевым (E_INVALIDARG), нужно добавить в метод проверку на корректность значений, а также найти и исправить ошибку, из-за которой в функцию приходит не правильное значение (eterbug #8241).
Да, в MSDN сказано только, что "параметр может передаваться неинициализированным". Написала программку, которая вызывает функцию с нулевым значением pIndex. Windows на это реагирует нормально, код ошибки возвращается S_OK.
Сейчас результаты написанного мной теста для нулевого указателя pIndex совпадают с результатами выполнения его же в windows, но если указатель ppTLib нулевой, wine падает, хотя в windows он также игнорируется. В wine есть еще одна функция ITypeInfo_fnGetContainingTypeLib, которая содержит проверку обоих указателей.
поняла что было не так, переписала тест, отправлю...
А можно совет? Я тут тест допереписала, а потом подумалось. Вот у меня тестируемая функция имеет 2 выходных параметра, их обязательно оба проверять?
(В ответ на comment #4) > А можно совет? Я тут тест допереписала, а потом подумалось. Вот у меня > тестируемая функция имеет 2 выходных параметра, их обязательно оба проверять? Исправила, отправила ещё раз.
Принято на winehq.
Чтобы не было путаницы, отправила к нам revert 8241 oleaut32: Check pointer before writing (eterbug #8241) и новые патчи.
Для тех, кто не пользуется багзиллой или не умеет пользоваться групповым редактированием при поиске, закрываем задачи, которые они должны были принять.