powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Помогите победить internal compiler error
2 сообщений из 2, страница 1 из 1
Помогите победить internal compiler error
    #40046498
amsdev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую !

Пытаюсь тут хотя бы частично собрать mORMot под С++Builder (на данный момент интересует его модули по криптографии а так же враппер sqlite). Практически все что мне нужно удалось скомпилировать и получить .hpp и .obj файлы для билдера после доработки напильником.

А вот как раз с враппером SynSqlite3.pas возникает проблема с F2084 Internal Error: GH8147. Пол дня бился чтобы понять на каком месте он валится и выяснилось вот что:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
const

SQLITE_TRANSIENT = pointer(-1);

...
result_blob: procedure(Context: TSQLite3FunctionContext; Value: Pointer;
                                  Value_bytes: Integer=0; DestroyPtr: TSQLDestroyPtr=SQLITE_TRANSIENT); cdecl;



32 битный компилятор валится из-за параметра по умолчанию TSQLDestroyPtr=SQLITE_TRANSIENT на этапе генерации .hpp файла для билдера, а 64 битный компилятор работает нормально.

Он хоть убей не хочет чтобы в качестве параметра по умолчанию был pointer(-1) ну или pointer($ffffffff). Как бы обойти чтобы заработало ? Может кто сталкивался с такой проблемой ?

з.ы. Студия Rio с последним update.
...
Рейтинг: 0 / 0
Помогите победить internal compiler error
    #40046501
inbox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость

https://github.com/sqlite/sqlite/blob/17b74817c09709c0dece04b65a6bfa888a4007b5/src/vdbeapi.c#L398
https://github.com/sqlite/sqlite/blob/4ad1a1c74caeee76124091e6e1771fae4afa1a33/src/vdbemem.c#L1068

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
void sqlite3_result_blob(
  sqlite3_context *pCtx, 
  const void *z, 
  int n, 
  void (*xDel)(void *)
){
  assert( n>=0 );
  assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
  setResultStrOrError(pCtx, z, n, 0, xDel);
}
void sqlite3_result_blob64(
  sqlite3_context *pCtx, 
  const void *z, 
  sqlite3_uint64 n,
  void (*xDel)(void *)
){
  assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
  assert( xDel!=SQLITE_DYNAMIC );
  if( n>0x7fffffff ){
    (void)invokeValueDestructor(z, xDel, pCtx);
  }else{
    setResultStrOrError(pCtx, z, (int)n, 0, xDel);
  }
}



Код: plaintext
1.
2.
3.
typedef void (*sqlite3_destructor_type)(void*);
#define SQLITE_STATIC      ((sqlite3_destructor_type)0)
#define SQLITE_TRANSIENT   ((sqlite3_destructor_type)-1)
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Помогите победить internal compiler error
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]