Вопрос к разработчикам. GetLastError()

 
Встроенные процедуры, в случае если не было ошибки, не обнуляют переменную "last_error"
Как, например, определить была ли ошибка при вызове "GlobalVariableGet", если значение переменной = 0 ??
Вот пример кода:
//-------------------------------------------------------
GlobalVariableSet("-=TEST=-", 0);
int V[]; V[-1]=111; // генерируем ошибку
int iVal=GlobalVariableGet("-=TEST=-");
int err=GetLastError();
Print("GetLastError(), ERR=",err);
//-------------------------------------------------------
В журнале будет запись: "... GetLastError(), ERR=4002"
Получается, что вместо простого
if ( !err ) return ("НЕТ ОШИБКИ!")
нужно будет писать целый обработчик по кодам ошибок.
Ну или замедлять работу программы лишний раз вызывая GetLastError()
чтобы искуственно обнулить last_error.
 

Да, с GlobalVariableGet пикантная ситуация получается. Может стоило бы ввести понятие MAX_INTEGER и пользоваться для ошибки им? Как говорится "чего не жалко", а то 0 всё-таки довольно популярное число. А если кто-то и доберётся до MAX_INTEGER то наверняка по ошибке :).

 
Мне думается, что все-таки нужно обнулять "last_error" внутри стандартных функций.
Иначе логика функции GetLastError() абсолютно искривляется.
Получается что использовать её в программе - ОПАСНО.
Опасно по той простой причине, что невозможно определить ТОЧНО, в каком месте программы произошел сбой и сделать соответствующий обработчик ошибки.
Я например достаточно долго искал ошибку в программе, пока не допёр,  что ошибка не в моей программе, а в логике работы GetLastError,  которая показывает "погоду" :(