Access Violation, некорректное выполнение запросов или вызовов API, ошибки утилит командной строки, в общем все, что вам мешает работать
Модераторы: kdv, dimitr
-
CyberMax
- Заслуженный разработчик
- Сообщения: 638
- Зарегистрирован: 31 янв 2006, 09:05
Сообщение
CyberMax » 02 авг 2006, 13:40
Функция (взята для примера из "Мира IB"):
Код: Выделить всё
library my_udf;
uses
SysUtils;
function malloc(Size: Integer): Pointer; cdecl; external 'msvcrt.dll';
function StrUpperCase(sz1: PChar): PChar; cdecl; export;
var
S: string;
begin
S := AnsiUpperCase(sz1);
Result := malloc(Length(S) + 1);
StrPCopy(Result, S);
end;
exports
StrUpperCase;
begin
end.
регистрация:
Код: Выделить всё
DECLARE EXTERNAL FUNCTION FN_UPPER_CASE
CSTRING(200)
RETURNS CSTRING(200) FREE_IT
ENTRY_POINT 'StrUpperCase' MODULE_NAME 'my_udf'
Запрос:
Код: Выделить всё
SELECT
FN_UPPER_CASE('qwe')
FROM
RDB$DATABASE
После шестого запуска сервер всегда слетает. На RC2 то же самое работает без проблем.
-
hvlad
- Разработчик Firebird
- Сообщения: 1244
- Зарегистрирован: 21 мар 2005, 10:48
Сообщение
hvlad » 02 авг 2006, 15:34
malloc не катит
-
CyberMax
- Заслуженный разработчик
- Сообщения: 638
- Зарегистрирован: 31 янв 2006, 09:05
Сообщение
CyberMax » 02 авг 2006, 15:41
1. Неужели настолько значительные изменения по сравнению с RC2?
2. Почему не катит?
3. Тогда чем память резервировать?
-
hvlad
- Разработчик Firebird
- Сообщения: 1244
- Зарегистрирован: 21 мар 2005, 10:48
Сообщение
hvlad » 02 авг 2006, 15:57
Код, работающий с УДФ не менялся с момента 2-ой беты.
Вообще-то, есть ib_util.dll
FB2 использует msvcr71.dll, а не msvcrt.dll
-
CyberMax
- Заслуженный разработчик
- Сообщения: 638
- Зарегистрирован: 31 янв 2006, 09:05
Сообщение
CyberMax » 02 авг 2006, 16:17
Ёпт, этот "Мир IB" меня уже в который раз подводит
. При использовании ib_util_malloc все работает корректно.
Кстати, по поводу второго кандидата. Дома стоял еще RC2. На нем malloc отработал без проблем. При установке RC3 воспроизвелась эта ситуация. Сейчас опять вернул RC2, а слет сервера остался. Хотя это уже совсем неважно.