X-Git-Url: http://git.pld-linux.org/?p=packages%2FFirebird.git;a=blobdiff_plain;f=Firebird-gcc4.patch;h=41b4490db7cfce23018ab50135d3093636300e37;hp=cea3a87daa75a3f192afca496b11ba6219c11017;hb=490cb53fa4cb637f3ecaf2f5e5aa0a250d9892bd;hpb=93913a724be4fc11cc172e6ca54cfd7d54bd9e86 diff --git a/Firebird-gcc4.patch b/Firebird-gcc4.patch index cea3a87..41b4490 100644 --- a/Firebird-gcc4.patch +++ b/Firebird-gcc4.patch @@ -1,470 +1,448 @@ ---- firebird-1.5.2.4731/src/common/classes/alloc.h~ 2004-09-17 20:34:27.000000000 +0000 -+++ firebird-1.5.2.4731/src/common/classes/alloc.h 2005-05-02 23:30:18.351312952 +0000 -@@ -253,11 +253,11 @@ +diff -ur firebird-1.5.3.4870-orig/src/burp/burp.cpp firebird-1.5.3.4870/src/burp/burp.cpp +--- firebird-1.5.3.4870-orig/src/burp/burp.cpp 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/burp/burp.cpp 2006-03-17 01:32:16.000000000 -0500 +@@ -1606,7 +1606,7 @@ + #ifndef WIN_NT + signal(SIGPIPE, SIG_IGN); + #endif +- fil->fil_fd = reinterpret_cast(GBAK_STDOUT_DESC); ++ fil->fil_fd = GBAK_STDOUT_DESC(); + break; + } + else +@@ -1724,7 +1724,7 @@ + + tdgbl->action->act_action = ACT_restore; + if (!strcmp(fil->fil_name, "stdin")) { +- fil->fil_fd = reinterpret_cast(GBAK_STDIN_DESC); ++ fil->fil_fd = GBAK_STDIN_DESC(); + tdgbl->file_desc = fil->fil_fd; + tdgbl->gbl_sw_files = fil->fil_next; + } +diff -ur firebird-1.5.3.4870-orig/src/burp/std_desc.h firebird-1.5.3.4870/src/burp/std_desc.h +--- firebird-1.5.3.4870-orig/src/burp/std_desc.h 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/burp/std_desc.h 2006-03-17 01:41:38.000000000 -0500 +@@ -35,12 +35,33 @@ + #include "firebird.h" + + #ifdef WIN_NT ++ + #include +-#define GBAK_STDIN_DESC GetStdHandle(STD_INPUT_HANDLE) /* standart input file descriptor */ +-#define GBAK_STDOUT_DESC GetStdHandle(STD_OUTPUT_HANDLE) /* standart output file descriptor */ ++ ++typedef HANDLE DESC; ++ ++static inline DESC GBAK_STDIN_DESC(void) ++{ ++ return GetStdHandle(STD_INPUT_HANDLE); // standard input file descriptor ++} ++static inline DESC GBAK_STDOUT_DESC(void) ++{ ++ return GetStdHandle(STD_OUTPUT_HANDLE); // standard output file descriptor ++} ++ + #else //WIN_NT +-#define GBAK_STDIN_DESC (int)0 /* standart input file descriptor */ +-#define GBAK_STDOUT_DESC (int)1 /* standart output file descriptor */ ++ ++typedef int DESC; ++ ++static inline DESC GBAK_STDIN_DESC(void) ++{ ++ return 0; // standard input file descriptor ++} ++static inline DESC GBAK_STDOUT_DESC(void) ++{ ++ return 1; // standard output file descriptor ++} ++ + #endif //WIN_NT + + #endif //GBAK_STD_DESC_H +diff -ur firebird-1.5.3.4870-orig/src/common/classes/alloc.h firebird-1.5.3.4870/src/common/classes/alloc.h +--- firebird-1.5.3.4870-orig/src/common/classes/alloc.h 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/common/classes/alloc.h 2006-03-17 01:32:16.000000000 -0500 +@@ -241,23 +241,29 @@ + + void operator delete[](void* mem) throw(); + ++#if __GNUC__ < 4 ++#define STATIC_NEW static ++#else ++#define STATIC_NEW ++#endif ++ + #ifdef DEBUG_GDS_ALLOC +-static inline void* operator new(size_t s, Firebird::MemoryPool& pool, char* file, int line) { ++STATIC_NEW inline void* operator new(size_t s, Firebird::MemoryPool& pool, char* file, int line) { + return pool.allocate(s, 0, file, line); + // return pool.calloc(s, 0, file, line); + } +-static inline void* operator new[](size_t s, Firebird::MemoryPool& pool, char* file, int line) { ++STATIC_NEW inline void* operator new[](size_t s, Firebird::MemoryPool& pool, char* file, int line) { + return pool.allocate(s, 0, file, line); + // return pool.calloc(s, 0, file, line); + } #define FB_NEW(pool) new(pool,__FILE__,__LINE__) #define FB_NEW_RPT(pool,count) new(pool,count,__FILE__,__LINE__) #else -static inline void* operator new(size_t s, Firebird::MemoryPool& pool) { -+inline void* operator new(size_t s, Firebird::MemoryPool& pool) { ++STATIC_NEW inline void* operator new(size_t s, Firebird::MemoryPool& pool) { return pool.allocate(s); // return pool.calloc(s); } -static inline void* operator new[](size_t s, Firebird::MemoryPool& pool) { -+inline void* operator new[](size_t s, Firebird::MemoryPool& pool) { ++STATIC_NEW inline void* operator new[](size_t s, Firebird::MemoryPool& pool) { return pool.allocate(s); // return pool.calloc(s); } ---- firebird-1.5.2.4731/src/common/config/config.h.orig 2005-05-02 23:33:31.284982576 +0000 -+++ firebird-1.5.2.4731/src/common/config/config.h 2005-05-02 23:36:57.674606584 +0000 -@@ -118,12 +118,12 @@ - /* - Block size for the sorting manager - */ -- static int getSortMemBlockSize(); -+ static size_t getSortMemBlockSize(); - - /* - Memory usage limit for the sorting manager - */ -- static int getSortMemUpperLimit(); -+ static size_t getSortMemUpperLimit(); - - /* - Whether remote (NFS) files can be opened -@@ -133,12 +133,12 @@ - /* - Startup option for the guardian - */ -- static int getGuardianOption(); -+ static size_t getGuardianOption(); - - /* - CPU affinity mask - */ -- static int getCpuAffinityMask(); -+ static size_t getCpuAffinityMask(); - - /* - Old parameter ordering for backward compatibility with FB1/IB6.X -@@ -148,7 +148,7 @@ - /* - XDR buffer size - */ -- static int getTcpRemoteBufferSize(); -+ static size_t getTcpRemoteBufferSize(); - - /* - Disable Nagle algorithm -@@ -158,37 +158,37 @@ - /* - IPC client mapping - */ -- static int getIpcMapSize(); -+ static size_t getIpcMapSize(); - - /* - Default database cache size - */ -- static int getDefaultDbCachePages(); -+ static size_t getDefaultDbCachePages(); - - /* - Connection timeout - */ -- static int getConnectionTimeout(); -+ static size_t getConnectionTimeout(); - - /* - Dummy packet interval - */ -- static int getDummyPacketInterval(); -+ static size_t getDummyPacketInterval(); - - /* - Lock manager memory size - */ -- static int getLockMemSize(); -+ static size_t getLockMemSize(); - - /* - Lock manager semaphore count - */ -- static int getLockSemCount(); -+ static size_t getLockSemCount(); - - /* - Lock manager signal number - */ -- static int getLockSignal(); -+ static size_t getLockSignal(); - - /* - Lock manager grant order -@@ -198,27 +198,27 @@ - /* - Lock manager hash slots - */ -- static int getLockHashSlots(); -+ static size_t getLockHashSlots(); - - /* - Lock manager acquire spins - */ -- static int getLockAcquireSpins(); -+ static size_t getLockAcquireSpins(); - - /* - Event manager memory size - */ -- static int getEventMemSize(); -+ static size_t getEventMemSize(); - - /* - Deadlock timeout - */ -- static int getDeadlockTimeout(); -+ static size_t getDeadlockTimeout(); - - /* - Solaris stall value - */ -- static int getSolarisStallValue(); -+ static size_t getSolarisStallValue(); - - /* - Trace memory pools -@@ -228,17 +228,17 @@ - /* - Priority switch delay - */ -- static int getPrioritySwitchDelay(); -+ static size_t getPrioritySwitchDelay(); - - /* - Dead threads collection - */ -- static int getDeadThreadsCollection(); -+ static size_t getDeadThreadsCollection(); - - /* - Priority boost - */ -- static int getPriorityBoost(); -+ static size_t getPriorityBoost(); - - /* - Service name for remote protocols -@@ -248,7 +248,7 @@ - /* - Service port for INET - */ -- static int getRemoteServicePort(); -+ static size_t getRemoteServicePort(); - - /* - Pipe name for WNET -@@ -263,17 +263,17 @@ - /* - Unflushed writes number - */ -- static int getMaxUnflushedWrites(); -+ static size_t getMaxUnflushedWrites(); - - /* - Unflushed write time - */ -- static int getMaxUnflushedWriteTime(); -+ static size_t getMaxUnflushedWriteTime(); - - /* - Process priority level - */ -- static int getProcessPriorityLevel(); -+ static size_t getProcessPriorityLevel(); - - /* - Create window for IPC stuff -@@ -288,7 +288,7 @@ - /* - Port for event processing - */ -- static int getRemoteAuxPort(); -+ static size_t getRemoteAuxPort(); - - /* - Server binding NIC address ---- firebird-1.5.2.4731/src/common/config/config.cpp.orig 2005-05-02 23:33:35.531337032 +0000 -+++ firebird-1.5.2.4731/src/common/config/config.cpp 2005-05-02 23:36:03.720808808 +0000 -@@ -257,14 +257,14 @@ - return result ? result : sysConfig.root_dir; - } +diff -ur firebird-1.5.3.4870-orig/src/common/config/config.cpp firebird-1.5.3.4870/src/common/config/config.cpp +--- firebird-1.5.3.4870-orig/src/common/config/config.cpp 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/common/config/config.cpp 2006-03-17 01:32:16.000000000 -0500 +@@ -261,12 +261,12 @@ --int Config::getSortMemBlockSize() -+size_t Config::getSortMemBlockSize() + int Config::getSortMemBlockSize() { - return (int) sysConfig.values[KEY_SORT_MEM_BLOCK_SIZE]; -+ return (size_t) sysConfig.values[KEY_SORT_MEM_BLOCK_SIZE]; ++ return (int)(IPTR) sysConfig.values[KEY_SORT_MEM_BLOCK_SIZE]; } --int Config::getSortMemUpperLimit() -+size_t Config::getSortMemUpperLimit() + int Config::getSortMemUpperLimit() { - return (int) sysConfig.values[KEY_SORT_MEM_UPPER_LIMIT]; -+ return (size_t) sysConfig.values[KEY_SORT_MEM_UPPER_LIMIT]; ++ return (int)(IPTR) sysConfig.values[KEY_SORT_MEM_UPPER_LIMIT]; } bool Config::getRemoteFileOpenAbility() -@@ -272,14 +272,14 @@ - return (bool) sysConfig.values[KEY_REMOTE_FILE_OPEN_ABILITY]; - } +@@ -276,12 +276,12 @@ --int Config::getGuardianOption() -+size_t Config::getGuardianOption() + int Config::getGuardianOption() { - return (int) sysConfig.values[KEY_GUARDIAN_OPTION]; -+ return (size_t) sysConfig.values[KEY_GUARDIAN_OPTION]; ++ return (int)(IPTR) sysConfig.values[KEY_GUARDIAN_OPTION]; } --int Config::getCpuAffinityMask() -+size_t Config::getCpuAffinityMask() + int Config::getCpuAffinityMask() { - return (int) sysConfig.values[KEY_CPU_AFFINITY_MASK]; -+ return (size_t) sysConfig.values[KEY_CPU_AFFINITY_MASK]; ++ return (int)(IPTR) sysConfig.values[KEY_CPU_AFFINITY_MASK]; } bool Config::getOldParameterOrdering() -@@ -287,9 +287,9 @@ - return (bool) sysConfig.values[KEY_OLD_PARAMETER_ORDERING]; - } +@@ -291,7 +291,7 @@ --int Config::getTcpRemoteBufferSize() -+size_t Config::getTcpRemoteBufferSize() + int Config::getTcpRemoteBufferSize() { - return (int) sysConfig.values[KEY_TCP_REMOTE_BUFFER_SIZE]; -+ return (size_t) sysConfig.values[KEY_TCP_REMOTE_BUFFER_SIZE]; ++ return (int)(IPTR) sysConfig.values[KEY_TCP_REMOTE_BUFFER_SIZE]; } bool Config::getTcpNoNagle() -@@ -297,39 +297,39 @@ - return (bool) sysConfig.values[KEY_TCP_NO_NAGLE]; - } +@@ -301,37 +301,37 @@ --int Config::getIpcMapSize() -+size_t Config::getIpcMapSize() + int Config::getIpcMapSize() { - return (int) sysConfig.values[KEY_IPC_MAP_SIZE]; -+ return (size_t) sysConfig.values[KEY_IPC_MAP_SIZE]; ++ return (int)(IPTR) sysConfig.values[KEY_IPC_MAP_SIZE]; } --int Config::getDefaultDbCachePages() -+size_t Config::getDefaultDbCachePages() + int Config::getDefaultDbCachePages() { - return (int) sysConfig.values[KEY_DEFAULT_DB_CACHE_PAGES]; -+ return (size_t) sysConfig.values[KEY_DEFAULT_DB_CACHE_PAGES]; ++ return (int)(IPTR) sysConfig.values[KEY_DEFAULT_DB_CACHE_PAGES]; } --int Config::getConnectionTimeout() -+size_t Config::getConnectionTimeout() + int Config::getConnectionTimeout() { - return (int) sysConfig.values[KEY_CONNECTION_TIMEOUT]; -+ return (size_t) sysConfig.values[KEY_CONNECTION_TIMEOUT]; ++ return (int)(IPTR) sysConfig.values[KEY_CONNECTION_TIMEOUT]; } --int Config::getDummyPacketInterval() -+size_t Config::getDummyPacketInterval() + int Config::getDummyPacketInterval() { - return (int) sysConfig.values[KEY_DUMMY_PACKET_INTERVAL]; -+ return (size_t) sysConfig.values[KEY_DUMMY_PACKET_INTERVAL]; ++ return (int)(IPTR) sysConfig.values[KEY_DUMMY_PACKET_INTERVAL]; } --int Config::getLockMemSize() -+size_t Config::getLockMemSize() + int Config::getLockMemSize() { - return (int) sysConfig.values[KEY_LOCK_MEM_SIZE]; -+ return (size_t) sysConfig.values[KEY_LOCK_MEM_SIZE]; ++ return (int)(IPTR) sysConfig.values[KEY_LOCK_MEM_SIZE]; } --int Config::getLockSemCount() -+size_t Config::getLockSemCount() + int Config::getLockSemCount() { - return (int) sysConfig.values[KEY_LOCK_SEM_COUNT]; -+ return (size_t) sysConfig.values[KEY_LOCK_SEM_COUNT]; ++ return (int)(IPTR) sysConfig.values[KEY_LOCK_SEM_COUNT]; } --int Config::getLockSignal() -+size_t Config::getLockSignal() + int Config::getLockSignal() { - return (int) sysConfig.values[KEY_LOCK_SIGNAL]; -+ return (size_t) sysConfig.values[KEY_LOCK_SIGNAL]; ++ return (int)(IPTR) sysConfig.values[KEY_LOCK_SIGNAL]; } bool Config::getLockGrantOrder() -@@ -337,29 +337,29 @@ - return (bool) sysConfig.values[KEY_LOCK_GRANT_ORDER]; - } +@@ -341,27 +341,27 @@ --int Config::getLockHashSlots() -+size_t Config::getLockHashSlots() + int Config::getLockHashSlots() { - return (int) sysConfig.values[KEY_LOCK_HASH_SLOTS]; -+ return (size_t) sysConfig.values[KEY_LOCK_HASH_SLOTS]; ++ return (int)(IPTR) sysConfig.values[KEY_LOCK_HASH_SLOTS]; } --int Config::getLockAcquireSpins() -+size_t Config::getLockAcquireSpins() + int Config::getLockAcquireSpins() { - return (int) sysConfig.values[KEY_LOCK_ACQUIRE_SPINS]; -+ return (size_t) sysConfig.values[KEY_LOCK_ACQUIRE_SPINS]; ++ return (int)(IPTR) sysConfig.values[KEY_LOCK_ACQUIRE_SPINS]; } --int Config::getEventMemSize() -+size_t Config::getEventMemSize() + int Config::getEventMemSize() { - return (int) sysConfig.values[KEY_EVENT_MEM_SIZE]; -+ return (size_t) sysConfig.values[KEY_EVENT_MEM_SIZE]; ++ return (int)(IPTR) sysConfig.values[KEY_EVENT_MEM_SIZE]; } --int Config::getDeadlockTimeout() -+size_t Config::getDeadlockTimeout() + int Config::getDeadlockTimeout() { - return (int) sysConfig.values[KEY_DEADLOCK_TIMEOUT]; -+ return (size_t) sysConfig.values[KEY_DEADLOCK_TIMEOUT]; ++ return (int)(IPTR) sysConfig.values[KEY_DEADLOCK_TIMEOUT]; } --int Config::getSolarisStallValue() -+size_t Config::getSolarisStallValue() + int Config::getSolarisStallValue() { - return (int) sysConfig.values[KEY_SOLARIS_STALL_VALUE]; -+ return (size_t) sysConfig.values[KEY_SOLARIS_STALL_VALUE]; ++ return (int)(IPTR) sysConfig.values[KEY_SOLARIS_STALL_VALUE]; } bool Config::getTraceMemoryPools() -@@ -367,25 +367,25 @@ - return (bool) sysConfig.values[KEY_TRACE_MEMORY_POOLS]; - } +@@ -371,7 +371,7 @@ --int Config::getPrioritySwitchDelay() -+size_t Config::getPrioritySwitchDelay() + int Config::getPrioritySwitchDelay() { - int rc = (int) sysConfig.values[KEY_PRIORITY_SWITCH_DELAY]; -+ size_t rc = (size_t) sysConfig.values[KEY_PRIORITY_SWITCH_DELAY]; ++ int rc = (int)(IPTR) sysConfig.values[KEY_PRIORITY_SWITCH_DELAY]; if (rc < 1) rc = 1; return rc; - } +@@ -379,7 +379,7 @@ --int Config::getDeadThreadsCollection() -+size_t Config::getDeadThreadsCollection() + int Config::getDeadThreadsCollection() { - int rc = (int) sysConfig.values[KEY_DEAD_THREADS_COLLECTION]; -+ size_t rc = (size_t) sysConfig.values[KEY_DEAD_THREADS_COLLECTION]; ++ int rc = (int)(IPTR) sysConfig.values[KEY_DEAD_THREADS_COLLECTION]; if (rc < 1) rc = 1; return rc; - } +@@ -387,7 +387,7 @@ --int Config::getPriorityBoost() -+size_t Config::getPriorityBoost() + int Config::getPriorityBoost() { - int rc = (int) sysConfig.values[KEY_PRIORITY_BOOST]; -+ size_t rc = (size_t) sysConfig.values[KEY_PRIORITY_BOOST]; ++ int rc = (int)(IPTR) sysConfig.values[KEY_PRIORITY_BOOST]; if (rc < 1) rc = 1; if (rc > 1000) -@@ -398,9 +398,9 @@ - return (const char*) sysConfig.values[KEY_REMOTE_SERVICE_NAME]; - } +@@ -402,7 +402,7 @@ --int Config::getRemoteServicePort() -+size_t Config::getRemoteServicePort() + int Config::getRemoteServicePort() { - return (int) sysConfig.values[KEY_REMOTE_SERVICE_PORT]; -+ return (size_t) sysConfig.values[KEY_REMOTE_SERVICE_PORT]; ++ return (int)(IPTR) sysConfig.values[KEY_REMOTE_SERVICE_PORT]; } const char *Config::getRemotePipeName() -@@ -413,19 +413,19 @@ - return (const char*) sysConfig.values[KEY_IPC_NAME]; - } +@@ -417,17 +417,17 @@ --int Config::getMaxUnflushedWrites() -+size_t Config::getMaxUnflushedWrites() + int Config::getMaxUnflushedWrites() { - return (int) sysConfig.values[KEY_MAX_UNFLUSHED_WRITES]; -+ return (size_t) sysConfig.values[KEY_MAX_UNFLUSHED_WRITES]; ++ return (int)(IPTR) sysConfig.values[KEY_MAX_UNFLUSHED_WRITES]; } --int Config::getMaxUnflushedWriteTime() -+size_t Config::getMaxUnflushedWriteTime() + int Config::getMaxUnflushedWriteTime() { - return (int) sysConfig.values[KEY_MAX_UNFLUSHED_WRITE_TIME]; -+ return (size_t) sysConfig.values[KEY_MAX_UNFLUSHED_WRITE_TIME]; ++ return (int)(IPTR) sysConfig.values[KEY_MAX_UNFLUSHED_WRITE_TIME]; } --int Config::getProcessPriorityLevel() -+size_t Config::getProcessPriorityLevel() + int Config::getProcessPriorityLevel() { - return (int) sysConfig.values[KEY_PROCESS_PRIORITY_LEVEL]; -+ return (size_t) sysConfig.values[KEY_PROCESS_PRIORITY_LEVEL]; ++ return (int)(IPTR) sysConfig.values[KEY_PROCESS_PRIORITY_LEVEL]; } bool Config::getCreateInternalWindow() -@@ -438,10 +438,10 @@ - return (bool) sysConfig.values[KEY_COMPLETE_BOOLEAN_EVALUATION]; - } - --int Config::getRemoteAuxPort() -+size_t Config::getRemoteAuxPort() +@@ -443,7 +443,7 @@ + int Config::getRemoteAuxPort() { #ifdef SUPERSERVER - return (int) sysConfig.values[KEY_REMOTE_AUX_PORT]; -+ return (size_t) sysConfig.values[KEY_REMOTE_AUX_PORT]; ++ return (int)(IPTR) sysConfig.values[KEY_REMOTE_AUX_PORT]; #else return 0; #endif ---- firebird-1.5.2.4731/src/jrd/common.h.orig 2005-05-02 23:26:45.000000000 +0000 -+++ firebird-1.5.2.4731/src/jrd/common.h 2005-05-02 23:50:08.873326096 +0000 -@@ -864,8 +864,8 @@ - - #define JRD_BUGCHK 15 /* facility code for bugcheck messages */ - #ifndef OFFSET --#define OFFSET(struct,fld) ((int) &((struct) 0)->fld) --#define OFFSETA(struct,fld) ((int) ((struct) 0)->fld) -+#define OFFSET(struct,fld) ((size_t) &((struct) 0)->fld) -+#define OFFSETA(struct,fld) ((size_t) ((struct) 0)->fld) - #endif - - #ifndef ODS_ALIGNMENT ---- firebird-1.5.2.4731/src/jrd/gds.cpp.orig 2005-05-02 23:39:56.000000000 +0000 -+++ firebird-1.5.2.4731/src/jrd/gds.cpp 2005-05-02 23:51:13.128557816 +0000 -@@ -2356,7 +2356,7 @@ - return result; +diff -ur firebird-1.5.3.4870-orig/src/dsql/parse.cpp firebird-1.5.3.4870/src/dsql/parse.cpp +--- firebird-1.5.3.4870-orig/src/dsql/parse.cpp 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/dsql/parse.cpp 2006-03-17 01:32:17.000000000 -0500 +@@ -6421,7 +6421,7 @@ + case 79: + { + lex.g_field->fld_dtype = dtype_cstring; +- lex.g_field->fld_character_length = (USHORT) yyvsp[-2]; } ++ lex.g_field->fld_character_length = (USHORT)(IPTR) yyvsp[-2]; } + break; + case 80: + { yyval = (DSQL_NOD) NULL; } +@@ -7541,27 +7541,27 @@ + case 507: + { + lex.g_field->fld_dtype = dtype_blob; +- lex.g_field->fld_seg_length = (USHORT) yyvsp[-1]; ++ lex.g_field->fld_seg_length = (USHORT)(IPTR) yyvsp[-1]; + lex.g_field->fld_sub_type = 0; + } + break; + case 508: + { + lex.g_field->fld_dtype = dtype_blob; +- lex.g_field->fld_seg_length = (USHORT) yyvsp[-3]; +- lex.g_field->fld_sub_type = (USHORT) yyvsp[-1]; ++ lex.g_field->fld_seg_length = (USHORT)(IPTR) yyvsp[-3]; ++ lex.g_field->fld_sub_type = (USHORT)(IPTR) yyvsp[-1]; + } + break; + case 509: + { + lex.g_field->fld_dtype = dtype_blob; + lex.g_field->fld_seg_length = 80; +- lex.g_field->fld_sub_type = (USHORT) yyvsp[-1]; ++ lex.g_field->fld_sub_type = (USHORT)(IPTR) yyvsp[-1]; + } + break; + case 510: + { +- lex.g_field->fld_seg_length = (USHORT) yyvsp[0]; ++ lex.g_field->fld_seg_length = (USHORT)(IPTR) yyvsp[0]; + } + break; + case 511: +@@ -7571,7 +7571,7 @@ + break; + case 512: + { +- lex.g_field->fld_sub_type = (USHORT) yyvsp[0]; ++ lex.g_field->fld_sub_type = (USHORT)(IPTR) yyvsp[0]; + } + break; + case 513: +@@ -7592,7 +7592,7 @@ + case 517: + { + lex.g_field->fld_dtype = dtype_text; +- lex.g_field->fld_character_length = (USHORT) yyvsp[-1]; ++ lex.g_field->fld_character_length = (USHORT)(IPTR) yyvsp[-1]; + lex.g_field->fld_flags |= FLD_national; + } + break; +@@ -7606,14 +7606,14 @@ + case 519: + { + lex.g_field->fld_dtype = dtype_varying; +- lex.g_field->fld_character_length = (USHORT) yyvsp[-1]; ++ lex.g_field->fld_character_length = (USHORT)(IPTR) yyvsp[-1]; + lex.g_field->fld_flags |= FLD_national; + } + break; + case 520: + { + lex.g_field->fld_dtype = dtype_text; +- lex.g_field->fld_character_length = (USHORT) yyvsp[-1]; ++ lex.g_field->fld_character_length = (USHORT)(IPTR) yyvsp[-1]; + } + break; + case 521: +@@ -7625,7 +7625,7 @@ + case 522: + { + lex.g_field->fld_dtype = dtype_varying; +- lex.g_field->fld_character_length = (USHORT) yyvsp[-1]; ++ lex.g_field->fld_character_length = (USHORT)(IPTR) yyvsp[-1]; + } + break; + case 531: +@@ -7705,7 +7705,7 @@ + lex.g_field->fld_dtype = dtype_long; + lex.g_field->fld_length = sizeof (SLONG); + } +- lex.g_field->fld_precision = (USHORT) yyvsp[-1]; ++ lex.g_field->fld_precision = (USHORT)(IPTR) yyvsp[-1]; + } + break; + case 536: +@@ -7765,8 +7765,8 @@ + lex.g_field->fld_length = sizeof (SLONG); + } + } +- lex.g_field->fld_precision = (USHORT) yyvsp[-3]; +- lex.g_field->fld_scale = - (SSHORT) yyvsp[-1]; ++ lex.g_field->fld_precision = (USHORT)(IPTR) yyvsp[-3]; ++ lex.g_field->fld_scale = - (SSHORT)(IPTR) yyvsp[-1]; + } + break; + case 539: +@@ -7932,7 +7932,7 @@ + { yyval = make_node (nod_table_lock, (int) 2, make_list (yyvsp[-1]), yyvsp[0]); } + break; + case 602: +-{ yyval = make_flag_node (nod_lock_mode, (SSHORT) ((SSHORT) yyvsp[-1] | (SSHORT) yyvsp[0]), (SSHORT) 0, NULL); } ++{ yyval = make_flag_node (nod_lock_mode, (SSHORT) ((SSHORT)(IPTR) yyvsp[-1] | (SSHORT)(IPTR) yyvsp[0]), (SSHORT) 0, NULL); } + break; + case 603: + { yyval = 0; } +diff -ur firebird-1.5.3.4870-orig/src/gpre/c_cxx.cpp firebird-1.5.3.4870/src/gpre/c_cxx.cpp +--- firebird-1.5.3.4870-orig/src/gpre/c_cxx.cpp 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/gpre/c_cxx.cpp 2006-03-17 01:32:18.000000000 -0500 +@@ -2184,7 +2184,7 @@ - if (stdio_flag) -- if (!(result = ib_fdopen((int) result, "w+"))) -+ if (!(result = ib_fdopen((int)(IPTR) result, "w+"))) - return (void *)-1; + args.pat_database = (DBB) init->nod_arg[3]; + args.pat_vector1 = status_vector(action); +- args.pat_long1 = (int) init->nod_arg[2]; ++ args.pat_long1 = (int)(IPTR) init->nod_arg[2]; + args.pat_value2 = (int) event_list->nod_count; - if (expanded_string) ---- firebird-1.5.2.4731/src/gpre/cmd.cpp~ 2003-10-30 22:25:53.000000000 +0000 -+++ firebird-1.5.2.4731/src/gpre/cmd.cpp 2005-05-03 00:06:56.620125296 +0000 + // generate call to dynamically generate event blocks +@@ -2255,7 +2255,7 @@ + event_init = (GPRE_NOD) event_action->act_object; + stack_name = (SYM) event_init->nod_arg[0]; + if (!strcmp(event_name->sym_string, stack_name->sym_string)) { +- ident = (int) event_init->nod_arg[2]; ++ ident = (int)(IPTR) event_init->nod_arg[2]; + database = (DBB) event_init->nod_arg[3]; + } + } +diff -ur firebird-1.5.3.4870-orig/src/gpre/cmd.cpp firebird-1.5.3.4870/src/gpre/cmd.cpp +--- firebird-1.5.3.4870-orig/src/gpre/cmd.cpp 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/gpre/cmd.cpp 2006-03-17 01:32:18.000000000 -0500 @@ -204,7 +204,7 @@ case ACT_drop_shadow: put_numeric(request, gds_dyn_delete_shadow, - (SSHORT) action->act_object); -+ (SSHORT) (IPTR) action->act_object); ++ (SSHORT)(IPTR) action->act_object); STUFF_END; break; ---- firebird-1.5.2.4731/src/gpre/cme.cpp.orig 2005-05-03 00:16:24.976721960 +0000 -+++ firebird-1.5.2.4731/src/gpre/cme.cpp 2005-05-03 00:15:46.661546752 +0000 +diff -ur firebird-1.5.3.4870-orig/src/gpre/cme.cpp firebird-1.5.3.4870/src/gpre/cme.cpp +--- firebird-1.5.3.4870-orig/src/gpre/cme.cpp 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/gpre/cme.cpp 2006-03-17 01:32:18.000000000 -0500 @@ -251,7 +251,7 @@ // ** Begin date/time/timestamp support * case nod_extract: STUFF(blr_extract); - switch ((KWWORDS) (int) node->nod_arg[0]) -+ switch ((KWWORDS) (IPTR) node->nod_arg[0]) ++ switch ((KWWORDS) (int)(IPTR) node->nod_arg[1]) { case KW_YEAR: STUFF(blr_extract_year); @@ -473,22 +451,41 @@ case nod_extract: { - KWWORDS kw_word = (KWWORDS) (int) node->nod_arg[0]; -+ KWWORDS kw_word = (KWWORDS) (IPTR) node->nod_arg[0]; ++ KWWORDS kw_word = (KWWORDS) (int)(IPTR) node->nod_arg[0]; CME_get_dtype(node->nod_arg[1], f); switch (f->fld_dtype) { ---- firebird-1.5.2.4731/src/gpre/c_cxx.cpp.orig 2005-05-03 00:17:13.068891056 +0000 -+++ firebird-1.5.2.4731/src/gpre/c_cxx.cpp 2005-05-03 00:17:54.679565272 +0000 -@@ -2184,7 +2184,7 @@ +diff -ur firebird-1.5.3.4870-orig/src/gpre/cob.cpp firebird-1.5.3.4870/src/gpre/cob.cpp +--- firebird-1.5.3.4870-orig/src/gpre/cob.cpp 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/gpre/cob.cpp 2006-03-17 01:32:18.000000000 -0500 +@@ -382,7 +382,7 @@ + static void gen_on_error (ACT); + static void gen_procedure (ACT); + static void gen_put_segment (ACT); +-static void gen_raw (UCHAR *, enum req_t, int, int); ++static void gen_raw (UCHAR *, enum req_t, int, IPTR); + static void gen_ready (ACT); + static void gen_receive (ACT, POR); + static void gen_release (ACT); +@@ -2656,7 +2656,7 @@ args.pat_database = (DBB) init->nod_arg[3]; args.pat_vector1 = status_vector(action); - args.pat_value1 = (int) init->nod_arg[2]; + args.pat_value1 = (IPTR) init->nod_arg[2]; args.pat_value2 = (int) event_list->nod_count; - - // generate call to dynamically generate event blocks -@@ -2255,7 +2255,7 @@ + args.pat_string1 = ISC_EVENT_BLOCK; + args.pat_string2 = ISC_EVENT_WAIT; +@@ -2712,7 +2712,7 @@ + LLS stack_ptr; + ACT event_action; + SSHORT column; +- int ident; ++ IPTR ident; + TEXT s[64]; + TEXT *pattern1 = + "CALL \"%S2\" USING %V1, %RF%DH%RE, %VF%S4%N1L%VE, %VF%S4%N1A%VE, %VF%S4%N1B%VE"; +@@ -2730,7 +2730,7 @@ event_init = (GPRE_NOD) event_action->act_object; stack_name = (SYM) event_init->nod_arg[0]; if (!strcmp(event_name->sym_string, stack_name->sym_string)) { @@ -497,145 +494,71 @@ database = (DBB) event_init->nod_arg[3]; } } ---- firebird-1.5.2.4731/src/jrd/sdl.cpp~ 2003-04-10 06:49:14.000000000 +0000 -+++ firebird-1.5.2.4731/src/jrd/sdl.cpp 2005-05-03 00:19:43.328048192 +0000 -@@ -699,7 +699,7 @@ - } - element_desc = array_desc->ads_rpt[value].ads_desc; - element_desc.dsc_address = (BLOB_PTR *) arg->sdl_arg_array + -- (SLONG) element_desc.dsc_address + -+ (IPTR) element_desc.dsc_address + - (array_desc->ads_element_length * subscript); - - /* Is this element within the array bounds? */ ---- firebird-1.5.2.4731/src/jrd/dpm.cpp.orig 2005-05-03 00:21:08.675073472 +0000 -+++ firebird-1.5.2.4731/src/jrd/dpm.cpp 2005-05-03 00:21:25.822466672 +0000 -@@ -2214,7 +2214,7 @@ +@@ -3845,7 +3845,7 @@ - DEBUG if (stack) - while (*stack) -- CCH_precedence(tdbb, &rpb->rpb_window, (SLONG) LLS_POP(stack)); -+ CCH_precedence(tdbb, &rpb->rpb_window, (IPTR) LLS_POP(stack)); + static void gen_raw( + UCHAR * blr, +- enum req_t request_type, int request_length, int ident) ++ enum req_t request_type, int request_length, IPTR ident) + { + UCHAR *c; + TEXT s[256]; +@@ -4193,7 +4193,7 @@ + printa(names[COLUMN_0], FALSE, "01 %s%d.", + names[ISC_], blob->blb_bpb_ident); + gen_raw(blob->blb_bpb, request->req_type, blob->blb_bpb_length, +- (int) request); ++ (IPTR) request); + printa(names[COMMENT], FALSE, " "); + } + #ifdef PYXIS +@@ -4703,7 +4703,7 @@ + static void gen_type( ACT action) + { - CCH_precedence(tdbb, &rpb->rpb_window, -rpb->rpb_transaction); - CCH_MARK(tdbb, &rpb->rpb_window); -@@ -2831,7 +2831,7 @@ - If the page need to be compressed, compress it. */ +- printa(names[COLUMN], TRUE, "%ld", action->act_object); ++ printa(names[COLUMN], TRUE, "%ld", (IPTR) action->act_object); + } - while (*stack) -- CCH_precedence(tdbb, &rpb->rpb_window, (SLONG) LLS_POP(stack)); -+ CCH_precedence(tdbb, &rpb->rpb_window, (IPTR) LLS_POP(stack)); - CCH_MARK(tdbb, &rpb->rpb_window); - i = page->dpg_count + ((slot) ? 0 : 1); ---- firebird-1.5.2.4731/src/jrd/met.cpp.orig 2005-05-03 00:22:57.523525992 +0000 -+++ firebird-1.5.2.4731/src/jrd/met.cpp 2005-05-03 00:24:20.650888712 +0000 -@@ -1541,7 +1541,7 @@ - if (desc->dsc_address) - { - format->fmt_length = -- (ULONG) desc->dsc_address + desc->dsc_length; -+ (IPTR) desc->dsc_address + desc->dsc_length; - break; - } - } -@@ -3181,13 +3181,13 @@ - index_number < references->frgn_reference_ids->count(); - index_number++) - { -- if (idx->idx_id == (UCHAR) (*references->frgn_reference_ids) -+ if (idx->idx_id == (IPTR) (*references->frgn_reference_ids) - [index_number]) - { - idx->idx_primary_relation = -- (USHORT) (*references->frgn_relations)[index_number]; -+ (IPTR) (*references->frgn_relations)[index_number]; - idx->idx_primary_index = -- (UCHAR) (*references->frgn_indexes)[index_number]; -+ (IPTR) (*references->frgn_indexes)[index_number]; - return TRUE; - } - } -@@ -3203,7 +3203,7 @@ - index_number < dependencies->prim_reference_ids->count(); - index_number++) - { -- if (idx->idx_id == (UCHAR) (*dependencies->prim_reference_ids) -+ if (idx->idx_id == (IPTR) (*dependencies->prim_reference_ids) - [index_number]) - { - idx->idx_foreign_primaries = -@@ -4182,10 +4182,10 @@ - { - if ( (node = csb_->csb_rpt[i].csb_message) ) - { -- if ((int) node->nod_arg[e_msg_number] == 0) -+ if ((IPTR) node->nod_arg[e_msg_number] == 0) - { - procedure->prc_input_msg = node; -- } else if ((int) node->nod_arg[e_msg_number] == 1) -+ } else if ((IPTR) node->nod_arg[e_msg_number] == 1) - { - procedure->prc_output_msg = node; - } -@@ -6141,7 +6141,7 @@ - node = (JRD_NOD) LLS_POP(&csb->csb_dependencies); - if (!node->nod_arg[e_dep_object]) - continue; -- dpdo_type = (SSHORT) node->nod_arg[e_dep_object_type]; -+ dpdo_type = (IPTR) node->nod_arg[e_dep_object_type]; - relation = NULL; - procedure = NULL; - switch (dpdo_type) { -@@ -6154,13 +6154,13 @@ - dpdo_name = (TEXT*) procedure->prc_name->str_data; - break; - case obj_exception: -- number = (SLONG) node->nod_arg [e_dep_object]; -+ number = (IPTR) node->nod_arg [e_dep_object]; - MET_lookup_exception (tdbb, number, name, NULL); - dpdo_name = name; - break; - /* CVC: Here I'm going to track those pesky things named generators and UDFs. */ - case obj_generator: -- number = (SLONG) node->nod_arg [e_dep_object]; -+ number = (IPTR) node->nod_arg [e_dep_object]; - MET_lookup_generator_id (tdbb, number, name); - dpdo_name = name; - break; -@@ -6178,7 +6178,7 @@ - { - if (field_node->nod_type == nod_field) - { -- fld_id = (SSHORT) field_node->nod_arg[0]; -+ fld_id = (IPTR) field_node->nod_arg[0]; - if (relation) - { - if ( (field = MET_get_field(relation, fld_id)) ) ---- firebird-1.5.2.4731/src/jrd/blb.cpp.orig 2005-05-03 00:24:45.720077616 +0000 -+++ firebird-1.5.2.4731/src/jrd/blb.cpp 2005-05-03 00:24:58.563125176 +0000 +diff -ur firebird-1.5.3.4870-orig/src/gpre/pat.h firebird-1.5.3.4870/src/gpre/pat.h +--- firebird-1.5.3.4870-orig/src/gpre/pat.h 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/gpre/pat.h 2006-03-17 01:32:18.000000000 -0500 +@@ -85,7 +85,7 @@ + USHORT pat_ident2; + TEXT *pat_vector1; + TEXT *pat_vector2; +- int pat_value1; ++ IPTR pat_value1; + int pat_value2; + int pat_value3; + int pat_value4; +diff -ur firebird-1.5.3.4870-orig/src/jrd/blb.cpp firebird-1.5.3.4870/src/jrd/blb.cpp +--- firebird-1.5.3.4870-orig/src/jrd/blb.cpp 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/jrd/blb.cpp 2006-03-17 01:32:28.000000000 -0500 @@ -860,8 +860,8 @@ request = tdbb->tdbb_request; source = (BID) from_desc->dsc_address; destination = (BID) to_desc->dsc_address; - id = (USHORT) field->nod_arg[e_fld_id]; - rpb = &request->req_rpb[(int) field->nod_arg[e_fld_stream]]; -+ id = (IPTR) field->nod_arg[e_fld_id]; -+ rpb = &request->req_rpb[(IPTR) field->nod_arg[e_fld_stream]]; ++ id = (USHORT)(IPTR) field->nod_arg[e_fld_id]; ++ rpb = &request->req_rpb[(int)(IPTR) field->nod_arg[e_fld_stream]]; relation = rpb->rpb_relation; record = rpb->rpb_record; ---- firebird-1.5.2.4731/src/jrd/cmp.cpp.orig 2005-05-03 00:25:15.000000000 +0000 -+++ firebird-1.5.2.4731/src/jrd/cmp.cpp 2005-05-03 00:32:27.036946792 +0000 +diff -ur firebird-1.5.3.4870-orig/src/jrd/cmp.cpp firebird-1.5.3.4870/src/jrd/cmp.cpp +--- firebird-1.5.3.4870-orig/src/jrd/cmp.cpp 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/jrd/cmp.cpp 2006-03-17 01:32:29.000000000 -0500 @@ -958,9 +958,9 @@ FMT format; USHORT id; - id = (USHORT) node->nod_arg[e_fld_id]; -+ id = (IPTR) node->nod_arg[e_fld_id]; ++ id = (USHORT)(IPTR) node->nod_arg[e_fld_id]; format = - CMP_format(tdbb, csb, (USHORT) node->nod_arg[e_fld_stream]); -+ CMP_format(tdbb, csb, (IPTR) node->nod_arg[e_fld_stream]); ++ CMP_format(tdbb, csb, (USHORT)(IPTR) node->nod_arg[e_fld_stream]); if (id >= format->fmt_count) { desc->dsc_dtype = dtype_null; desc->dsc_length = 0; @@ -644,10 +567,10 @@ sub = node->nod_arg[e_scl_field]; relation = - csb->csb_rpt[(USHORT) sub-> -+ csb->csb_rpt[(IPTR) sub-> ++ csb->csb_rpt[(USHORT)(IPTR) sub-> nod_arg[e_fld_stream]].csb_relation; - id = (USHORT) sub->nod_arg[e_fld_id]; -+ id = (IPTR) sub->nod_arg[e_fld_id]; ++ id = (USHORT)(IPTR) sub->nod_arg[e_fld_id]; field = MET_get_field(relation, id); if (!field || !(array = field->fld_array)) IBERROR(223); /* msg 223 argument of scalar operation must be an array */ @@ -656,7 +579,7 @@ case nod_extract: - if ((ULONG) node->nod_arg[e_extract_part] == blr_extract_second) { -+ if ((IPTR) node->nod_arg[e_extract_part] == blr_extract_second) { ++ if ((ULONG)(IPTR) node->nod_arg[e_extract_part] == blr_extract_second) { /* QUADDATE - SECOND returns a float, or scaled! */ desc->dsc_dtype = dtype_long; desc->dsc_length = sizeof(ULONG); @@ -665,254 +588,254 @@ message = node->nod_arg[e_arg_message]; format = (FMT) message->nod_arg[e_msg_format]; - *desc = format->fmt_desc[(int) node->nod_arg[e_arg_number]]; -+ *desc = format->fmt_desc[(IPTR) node->nod_arg[e_arg_number]]; ++ *desc = format->fmt_desc[(int)(IPTR) node->nod_arg[e_arg_number]]; return; } -@@ -2651,8 +2651,8 @@ +@@ -2653,8 +2653,8 @@ !input->nod_arg[e_fld_id] && !input->nod_arg[e_fld_stream]) --field_id; else - field_id = (USHORT) input->nod_arg[e_fld_id]; - stream = (USHORT) input->nod_arg[e_fld_stream]; -+ field_id = (IPTR) input->nod_arg[e_fld_id]; -+ stream = (IPTR) input->nod_arg[e_fld_stream]; ++ field_id = (USHORT)(IPTR) input->nod_arg[e_fld_id]; ++ stream = (USHORT)(IPTR) input->nod_arg[e_fld_stream]; if (remap_fld) { JRD_REL relation; JRD_FLD field; -@@ -2660,7 +2660,7 @@ +@@ -2662,7 +2662,7 @@ relation = (*csb)->csb_rpt[stream].csb_relation; field = MET_get_field(relation, field_id); if (field->fld_source) - field_id = (USHORT) field->fld_source->nod_arg[e_fld_id]; -+ field_id = (IPTR) field->fld_source->nod_arg[e_fld_id]; ++ field_id = (USHORT)(IPTR) field->fld_source->nod_arg[e_fld_id]; } if (remap) stream = remap[stream]; -@@ -2771,7 +2771,7 @@ +@@ -2773,7 +2773,7 @@ node->nod_type = input->nod_type; node->nod_count = 0; - stream = (USHORT) input->nod_arg[e_rel_stream]; -+ stream = (IPTR) input->nod_arg[e_rel_stream]; ++ stream = (USHORT)(IPTR) input->nod_arg[e_rel_stream]; /** Last entry in the remap contains the the original stream number. Get that stream number so that the flags can be copied -@@ -2851,7 +2851,7 @@ +@@ -2853,7 +2853,7 @@ node->nod_arg[e_prc_inputs] = copy(tdbb, csb, input->nod_arg[e_prc_inputs], remap, field_id, node->nod_arg[e_prc_in_msg], remap_fld); - stream = (USHORT) input->nod_arg[e_prc_stream]; -+ stream = (IPTR) input->nod_arg[e_prc_stream]; ++ stream = (USHORT)(IPTR) input->nod_arg[e_prc_stream]; new_stream = (*csb)->csb_n_stream++; node->nod_arg[e_prc_stream] = (JRD_NOD) (SLONG) new_stream; /* TMN: Here we should really have the following assert */ -@@ -2861,7 +2861,7 @@ +@@ -2863,7 +2863,7 @@ element = CMP_csb_element(csb, new_stream); // SKIDDER: Maybe we need to check if we really found a procedure ? element->csb_procedure = MET_lookup_procedure_id(tdbb, - (SSHORT)node->nod_arg[e_prc_procedure],FALSE,FALSE,0); -+ (IPTR)node->nod_arg[e_prc_procedure],FALSE,FALSE,0); ++ (SSHORT)(IPTR)node->nod_arg[e_prc_procedure],FALSE,FALSE,0); (*csb)->csb_rpt[new_stream].csb_flags |= (*csb)->csb_rpt[stream].csb_flags & csb_no_dbkey; -@@ -2874,7 +2874,7 @@ +@@ -2876,7 +2876,7 @@ node = PAR_make_node(tdbb, e_agg_length); node->nod_type = input->nod_type; node->nod_count = 0; - stream = (USHORT) input->nod_arg[e_agg_stream]; -+ stream = (IPTR) input->nod_arg[e_agg_stream]; ++ stream = (USHORT)(IPTR) input->nod_arg[e_agg_stream]; assert(stream <= MAX_STREAMS); new_stream = (*csb)->csb_n_stream++; assert(new_stream <= MAX_STREAMS); -@@ -2903,7 +2903,7 @@ +@@ -2905,7 +2905,7 @@ node = PAR_make_node(tdbb, e_uni_length); node->nod_type = input->nod_type; node->nod_count = 2; - stream = (USHORT) input->nod_arg[e_uni_stream]; -+ stream = (IPTR) input->nod_arg[e_uni_stream]; ++ stream = (USHORT)(IPTR) input->nod_arg[e_uni_stream]; new_stream = (*csb)->csb_n_stream++; node->nod_arg[e_uni_stream] = (JRD_NOD) (SLONG) new_stream; /* TMN: Here we should really have the following assert */ -@@ -3041,7 +3041,7 @@ +@@ -3043,7 +3043,7 @@ csb_repeat *tail; JRD_REL relation; - stream = (USHORT) node->nod_arg[e_rel_stream]; -+ stream = (IPTR) node->nod_arg[e_rel_stream]; ++ stream = (USHORT)(IPTR) node->nod_arg[e_rel_stream]; csb->csb_rpt[stream].csb_flags |= csb_no_dbkey; tail = &csb->csb_rpt[stream]; if ( (relation = tail->csb_relation) ) -@@ -3269,7 +3269,7 @@ +@@ -3271,7 +3271,7 @@ JRD_FLD field; UCHAR *map, local_map[MAP_LENGTH]; - stream = (USHORT) node->nod_arg[e_fld_stream]; -+ stream = (IPTR) node->nod_arg[e_fld_stream]; ++ stream = (USHORT)(IPTR) node->nod_arg[e_fld_stream]; /* Look at all rse's which are lower in scope than the rse which this field is referencing, and mark them as varying -- the rule is that if a field -@@ -3290,7 +3290,7 @@ +@@ -3292,7 +3292,7 @@ if (!(relation = tail->csb_relation) || !(field = MET_get_field(relation, - (USHORT) node->nod_arg[e_fld_id]))) break; -+ (IPTR) node->nod_arg[e_fld_id]))) break; ++ (USHORT)(IPTR) node->nod_arg[e_fld_id]))) break; /* if this is a modify or store, check REFERENCES access to any foreign keys. */ -@@ -3402,9 +3402,9 @@ +@@ -3404,9 +3404,9 @@ sub = node->nod_arg[e_asgn_from]; if (sub->nod_type == nod_field) { - stream = (USHORT) sub->nod_arg[e_fld_stream]; -+ stream = (IPTR) sub->nod_arg[e_fld_stream]; ++ stream = (USHORT)(IPTR) sub->nod_arg[e_fld_stream]; field = MET_get_field((*csb)->csb_rpt[stream].csb_relation, - (USHORT) sub->nod_arg[e_fld_id]); -+ (IPTR) sub->nod_arg[e_fld_id]); ++ (USHORT)(IPTR) sub->nod_arg[e_fld_id]); if (field) node->nod_arg[e_asgn_missing2] = field->fld_missing_value; } -@@ -3412,12 +3412,12 @@ +@@ -3414,12 +3414,12 @@ sub = node->nod_arg[e_asgn_to]; if (sub->nod_type != nod_field) break; - stream = (USHORT) sub->nod_arg[e_fld_stream]; -+ stream = (IPTR) sub->nod_arg[e_fld_stream]; ++ stream = (USHORT)(IPTR) sub->nod_arg[e_fld_stream]; tail = &(*csb)->csb_rpt[stream]; if (! (field = MET_get_field(tail->csb_relation, - (USHORT) sub->nod_arg[e_fld_id]))) break; -+ (IPTR) sub->nod_arg[e_fld_id]))) break; ++ (USHORT)(IPTR) sub->nod_arg[e_fld_id]))) break; if (field->fld_missing_value) { node->nod_arg[e_asgn_missing] = field->fld_missing_value; node->nod_count = 3; -@@ -3431,7 +3431,7 @@ +@@ -3433,7 +3433,7 @@ break; case nod_modify: - stream = (USHORT) node->nod_arg[e_mod_new_stream]; -+ stream = (IPTR) node->nod_arg[e_mod_new_stream]; ++ stream = (USHORT)(IPTR) node->nod_arg[e_mod_new_stream]; tail = &(*csb)->csb_rpt[stream]; tail->csb_flags |= csb_modify; pass1_modify(tdbb, csb, node); -@@ -3439,13 +3439,13 @@ +@@ -3441,13 +3441,13 @@ /* assert(node->nod_arg [e_mod_new_stream] <= MAX_USHORT); */ if ( (node->nod_arg[e_mod_validate] = make_validation(tdbb, csb, - (USHORT) node-> -+ (IPTR) node-> ++ (USHORT)(IPTR) node-> nod_arg[e_mod_new_stream])) ) node->nod_count = MAX(node->nod_count, (USHORT) e_mod_validate + 1); break; case nod_erase: - stream = (USHORT) node->nod_arg[e_erase_stream]; -+ stream = (IPTR) node->nod_arg[e_erase_stream]; ++ stream = (USHORT)(IPTR) node->nod_arg[e_erase_stream]; tail = &(*csb)->csb_rpt[stream]; tail->csb_flags |= csb_erase; pass1_erase(tdbb, csb, node); -@@ -3461,12 +3461,12 @@ +@@ -3463,12 +3463,12 @@ case nod_store: sub = node->nod_arg[e_sto_relation]; - stream = (USHORT) sub->nod_arg[e_rel_stream]; -+ stream = (IPTR) sub->nod_arg[e_rel_stream]; ++ stream = (USHORT)(IPTR) sub->nod_arg[e_rel_stream]; tail = &(*csb)->csb_rpt[stream]; tail->csb_flags |= csb_store; sub = pass1_store(tdbb, csb, node); if (sub) { - stream = (USHORT) sub->nod_arg[e_rel_stream]; -+ stream = (IPTR) sub->nod_arg[e_rel_stream]; ++ stream = (USHORT)(IPTR) sub->nod_arg[e_rel_stream]; if ((!node->nod_arg[e_sto_sub_store]) && (node->nod_arg[e_sto_validate] = make_validation(tdbb, csb, stream))) node->nod_count = -@@ -3493,7 +3493,7 @@ +@@ -3495,7 +3495,7 @@ case nod_aggregate: assert((int)node->nod_arg[e_agg_stream] <= MAX_STREAMS); - (*csb)->csb_rpt[(USHORT) node->nod_arg[e_agg_stream]].csb_flags |= -+ (*csb)->csb_rpt[(IPTR) node->nod_arg[e_agg_stream]].csb_flags |= ++ (*csb)->csb_rpt[(USHORT)(IPTR) node->nod_arg[e_agg_stream]].csb_flags |= csb_no_dbkey; ignore_dbkey(tdbb, *csb, (RSE) node->nod_arg[e_agg_rse], view); node->nod_arg[e_agg_rse] = -@@ -3521,7 +3521,7 @@ +@@ -3523,7 +3523,7 @@ NOD_T type; type = node->nod_type; - stream = (USHORT) node->nod_arg[0]; -+ stream = (IPTR) node->nod_arg[0]; ++ stream = (USHORT)(IPTR) node->nod_arg[0]; if (!(*csb)->csb_rpt[stream].csb_map) return node; -@@ -3556,7 +3556,7 @@ +@@ -3558,7 +3558,7 @@ break; case nod_cardinality: - stream = (USHORT) node->nod_arg[e_card_stream]; -+ stream = (IPTR) node->nod_arg[e_card_stream]; ++ stream = (USHORT)(IPTR) node->nod_arg[e_card_stream]; (*csb)->csb_rpt[stream].csb_flags |= csb_compute; break; -@@ -3623,7 +3623,7 @@ +@@ -3625,7 +3625,7 @@ /* To support views of views, loop until we hit a real relation */ for (;;) { - stream = new_stream = (USHORT) node->nod_arg[e_erase_stream]; -+ stream = new_stream = (IPTR) node->nod_arg[e_erase_stream]; ++ stream = new_stream = (USHORT)(IPTR) node->nod_arg[e_erase_stream]; tail = &(*csb)->csb_rpt[stream]; tail->csb_flags |= csb_erase; relation = (*csb)->csb_rpt[stream].csb_relation; -@@ -3691,7 +3691,7 @@ +@@ -3693,7 +3693,7 @@ parent = relation; parent_stream = stream; - new_stream = (USHORT) source->nod_arg[e_rel_stream]; -+ new_stream = (IPTR) source->nod_arg[e_rel_stream]; ++ new_stream = (USHORT)(IPTR) source->nod_arg[e_rel_stream]; node->nod_arg[e_erase_stream] = (JRD_NOD) (SLONG) map[new_stream]; } } -@@ -3738,7 +3738,7 @@ +@@ -3740,7 +3740,7 @@ field = MET_get_field(relation, id); if (field->fld_source) new_id = - (USHORT) (JRD_NOD) (field->fld_source)->nod_arg[e_fld_id]; -+ (IPTR) (JRD_NOD) (field->fld_source)->nod_arg[e_fld_id]; ++ (USHORT)(IPTR) (JRD_NOD) (field->fld_source)->nod_arg[e_fld_id]; else new_id = id; } -@@ -3800,8 +3800,8 @@ +@@ -3802,8 +3802,8 @@ /* To support views of views, loop until we hit a real relation */ for (;;) { - stream = (USHORT) node->nod_arg[e_mod_org_stream]; - new_stream = (USHORT) node->nod_arg[e_mod_new_stream]; -+ stream = (IPTR) node->nod_arg[e_mod_org_stream]; -+ new_stream = (IPTR) node->nod_arg[e_mod_new_stream]; ++ stream = (USHORT)(IPTR) node->nod_arg[e_mod_org_stream]; ++ new_stream = (USHORT)(IPTR) node->nod_arg[e_mod_new_stream]; tail = &(*csb)->csb_rpt[new_stream]; tail->csb_flags |= csb_modify; relation = (*csb)->csb_rpt[stream].csb_relation; -@@ -3840,7 +3840,7 @@ +@@ -3842,7 +3842,7 @@ node->nod_count = MAX(node->nod_count, (USHORT) e_mod_map_view + 1); map = (*csb)->csb_rpt[stream].csb_map; - stream = (USHORT) source->nod_arg[e_rel_stream]; -+ stream = (IPTR) source->nod_arg[e_rel_stream]; ++ stream = (USHORT)(IPTR) source->nod_arg[e_rel_stream]; stream = map[stream]; view_stream = new_stream; -@@ -3848,18 +3848,18 @@ +@@ -3850,18 +3850,18 @@ map = alloc_map(tdbb, csb, - (SSHORT) node->nod_arg[e_mod_new_stream]); -+ (IPTR) node->nod_arg[e_mod_new_stream]); ++ (SSHORT)(IPTR) node->nod_arg[e_mod_new_stream]); source = copy(tdbb, csb, source, map, 0, NULL, FALSE); /* TMN: Here we should really have the following assert */ /* assert(source->nod_arg [e_rel_stream] <= MAX_UCHAR); */ - map[new_stream] = (UCHAR) source->nod_arg[e_rel_stream]; -+ map[new_stream] = (IPTR) source->nod_arg[e_rel_stream]; ++ map[new_stream] = (UCHAR)(IPTR) source->nod_arg[e_rel_stream]; view_node = copy(tdbb, csb, node, map, 0, NULL, TRUE); view_node->nod_arg[e_mod_org_stream] = (JRD_NOD) (SLONG) stream; view_node->nod_arg[e_mod_new_stream] = @@ -920,16 +843,16 @@ view_node->nod_arg[e_mod_map_view] = NULL; node->nod_arg[e_mod_sub_mod] = view_node; - new_stream = (USHORT) source->nod_arg[e_rel_stream]; -+ new_stream = (IPTR) source->nod_arg[e_rel_stream]; ++ new_stream = (USHORT)(IPTR) source->nod_arg[e_rel_stream]; view_node->nod_arg[e_mod_statement] = pass1_expand_view(tdbb, *csb, view_stream, new_stream, TRUE); node->nod_count = -@@ -3872,14 +3872,14 @@ +@@ -3874,14 +3874,14 @@ /* View passes muster -- do some translation. Start with source stream */ map = (*csb)->csb_rpt[stream].csb_map; - stream = (USHORT) source->nod_arg[e_rel_stream]; -+ stream = (IPTR) source->nod_arg[e_rel_stream]; ++ stream = (USHORT)(IPTR) source->nod_arg[e_rel_stream]; node->nod_arg[e_mod_org_stream] = (JRD_NOD) (SLONG) map[stream]; /* Next, do update stream */ @@ -937,206 +860,2418 @@ map = alloc_map(tdbb, csb, - (SSHORT) node->nod_arg[e_mod_new_stream]); -+ (IPTR) node->nod_arg[e_mod_new_stream]); ++ (SSHORT)(IPTR) node->nod_arg[e_mod_new_stream]); source = copy(tdbb, csb, source, map, 0, NULL, FALSE); node->nod_arg[e_mod_new_stream] = source->nod_arg[e_rel_stream]; } -@@ -4126,7 +4126,7 @@ +@@ -4128,7 +4128,7 @@ pass1(tdbb, csb, source, parent_view, view_stream, FALSE); procedure = MET_lookup_procedure_id(tdbb, - (SSHORT)source->nod_arg[e_prc_procedure], FALSE, FALSE, 0); -+ (IPTR)source->nod_arg[e_prc_procedure], FALSE, FALSE, 0); ++ (SSHORT)(IPTR)source->nod_arg[e_prc_procedure], FALSE, FALSE, 0); post_procedure_access(tdbb, *csb, procedure); CMP_post_resource(&(*csb)->csb_resources, (BLK) procedure, Resource::rsc_procedure, procedure->prc_id); -@@ -4158,7 +4158,7 @@ +@@ -4160,7 +4160,7 @@ view->rel_id); source->nod_arg[e_rel_view] = (JRD_NOD) parent_view; - stream = (USHORT) source->nod_arg[e_rel_stream]; -+ stream = (IPTR) source->nod_arg[e_rel_stream]; ++ stream = (USHORT)(IPTR) source->nod_arg[e_rel_stream]; element = CMP_csb_element(csb, stream); element->csb_view = parent_view; /* TMN: Here we should really have the following assert */ -@@ -4173,7 +4173,7 @@ +@@ -4175,7 +4175,7 @@ for (vcx_ptr = &parent_view->rel_view_contexts; *vcx_ptr; vcx_ptr = &(*vcx_ptr)->vcx_next) if ((*vcx_ptr)->vcx_context == - (USHORT) source->nod_arg[e_rel_context]) { -+ (IPTR) source->nod_arg[e_rel_context]) { ++ (USHORT)(IPTR) source->nod_arg[e_rel_context]) { element->csb_alias = (*vcx_ptr)->vcx_context_name; break; } -@@ -4317,7 +4317,7 @@ +@@ -4319,7 +4319,7 @@ for (;;) { original = node->nod_arg[e_sto_relation]; - stream = (USHORT) original->nod_arg[e_rel_stream]; -+ stream = (IPTR) original->nod_arg[e_rel_stream]; ++ stream = (USHORT)(IPTR) original->nod_arg[e_rel_stream]; tail = &(*csb)->csb_rpt[stream]; tail->csb_flags |= csb_store; relation = (*csb)->csb_rpt[stream].csb_relation; -@@ -4371,7 +4371,7 @@ +@@ -4373,7 +4373,7 @@ node->nod_arg[e_sto_relation] = copy(tdbb, csb, source, map, 0, NULL, FALSE); new_stream = - (USHORT) node->nod_arg[e_sto_relation]->nod_arg[e_rel_stream]; -+ (IPTR) node->nod_arg[e_sto_relation]->nod_arg[e_rel_stream]; ++ (USHORT)(IPTR) node->nod_arg[e_sto_relation]->nod_arg[e_rel_stream]; node->nod_arg[e_sto_statement] = pass1_expand_view(tdbb, *csb, stream, new_stream, TRUE); node->nod_arg[e_sto_statement] = -@@ -4719,9 +4719,9 @@ +@@ -4721,9 +4721,9 @@ /* AB: Mark the streams involved with an UPDATE statement active. So that the optimizer can use indices for eventually used sub-selects. */ - stream = (USHORT) node->nod_arg[e_mod_org_stream]; -+ stream = (IPTR) node->nod_arg[e_mod_org_stream]; ++ stream = (USHORT)(IPTR) node->nod_arg[e_mod_org_stream]; csb->csb_rpt[stream].csb_flags |= csb_active; - stream = (USHORT) node->nod_arg[e_mod_new_stream]; -+ stream = (IPTR) node->nod_arg[e_mod_new_stream]; ++ stream = (USHORT)(IPTR) node->nod_arg[e_mod_new_stream]; csb->csb_rpt[stream].csb_flags |= csb_active; } -@@ -4733,9 +4733,9 @@ +@@ -4735,9 +4735,9 @@ if (node->nod_type == nod_modify) { /* AB: Remove the previous flags */ - stream = (USHORT) node->nod_arg[e_mod_org_stream]; -+ stream = (IPTR) node->nod_arg[e_mod_org_stream]; ++ stream = (USHORT)(IPTR) node->nod_arg[e_mod_org_stream]; csb->csb_rpt[stream].csb_flags &= ~csb_active; - stream = (USHORT) node->nod_arg[e_mod_new_stream]; -+ stream = (IPTR) node->nod_arg[e_mod_new_stream]; ++ stream = (USHORT)(IPTR) node->nod_arg[e_mod_new_stream]; csb->csb_rpt[stream].csb_flags &= ~csb_active; } -@@ -4834,7 +4834,7 @@ +@@ -4836,7 +4836,7 @@ FMT format; fmt::fmt_desc_iterator desc; - stream = (USHORT) node->nod_arg[e_mod_org_stream]; -+ stream = (IPTR) node->nod_arg[e_mod_org_stream]; ++ stream = (USHORT)(IPTR) node->nod_arg[e_mod_org_stream]; csb->csb_rpt[stream].csb_flags |= csb_update; format = CMP_format(tdbb, csb, stream); desc = format->fmt_desc.begin(); -@@ -4859,13 +4859,13 @@ +@@ -4861,13 +4861,13 @@ break; case nod_erase: - stream = (USHORT) node->nod_arg[e_erase_stream]; -+ stream = (IPTR) node->nod_arg[e_erase_stream]; ++ stream = (USHORT)(IPTR) node->nod_arg[e_erase_stream]; csb->csb_rpt[stream].csb_flags |= csb_update; break; case nod_field: - stream = (USHORT) node->nod_arg[e_fld_stream]; - id = (USHORT) node->nod_arg[e_fld_id]; -+ stream = (IPTR) node->nod_arg[e_fld_stream]; -+ id = (IPTR) node->nod_arg[e_fld_id]; ++ stream = (USHORT)(IPTR) node->nod_arg[e_fld_stream]; ++ id = (USHORT)(IPTR) node->nod_arg[e_fld_id]; SBM_set(tdbb, &csb->csb_rpt[stream].csb_fields, id); if (node->nod_flags & nod_value) { csb->csb_impure += sizeof(struct vlux); -@@ -4939,7 +4939,7 @@ +@@ -4941,7 +4941,7 @@ pass2_rse(tdbb, csb, (RSE) node->nod_arg[e_agg_rse]); pass2(tdbb, csb, node->nod_arg[e_agg_map], node); pass2(tdbb, csb, node->nod_arg[e_agg_group], node); - stream = (USHORT) node->nod_arg[e_agg_stream]; -+ stream = (IPTR) node->nod_arg[e_agg_stream]; ++ stream = (USHORT)(IPTR) node->nod_arg[e_agg_stream]; assert(stream <= MAX_STREAMS); process_map(tdbb, csb, node->nod_arg[e_agg_map], &csb->csb_rpt[stream].csb_format); -@@ -5048,7 +5048,7 @@ +@@ -5050,7 +5050,7 @@ node = *ptr; if (node->nod_type == nod_relation) { - USHORT stream = (USHORT) node->nod_arg[e_rel_stream]; -+ USHORT stream = (IPTR) node->nod_arg[e_rel_stream]; ++ USHORT stream = (USHORT)(IPTR) node->nod_arg[e_rel_stream]; csb->csb_rpt[stream].csb_flags |= csb_active; pass2(tdbb, csb, node, (JRD_NOD) rse); } -@@ -5056,12 +5056,12 @@ +@@ -5058,12 +5058,12 @@ pass2_rse(tdbb, csb, (RSE) node); } else if (node->nod_type == nod_procedure) { - USHORT stream = (USHORT) node->nod_arg[e_prc_stream]; -+ USHORT stream = (IPTR) node->nod_arg[e_prc_stream]; ++ USHORT stream = (USHORT)(IPTR) node->nod_arg[e_prc_stream]; csb->csb_rpt[stream].csb_flags |= csb_active; pass2(tdbb, csb, node, (JRD_NOD) rse); } else if (node->nod_type == nod_aggregate) { - USHORT stream = (USHORT) node->nod_arg[e_agg_stream]; -+ USHORT stream = (IPTR) node->nod_arg[e_agg_stream]; ++ USHORT stream = (USHORT)(IPTR) node->nod_arg[e_agg_stream]; assert(stream <= MAX_STREAMS); csb->csb_rpt[stream].csb_flags |= csb_active; pass2(tdbb, csb, node, (JRD_NOD) rse); -@@ -5116,7 +5116,7 @@ +@@ -5118,7 +5118,7 @@ /* Make up a format block sufficiently large to hold instantiated record */ clauses = node->nod_arg[e_uni_clauses]; - id = (USHORT) node->nod_arg[e_uni_stream]; -+ id = (IPTR) node->nod_arg[e_uni_stream]; ++ id = (USHORT)(IPTR) node->nod_arg[e_uni_stream]; format = &csb->csb_rpt[id].csb_format; /* Process alternating rse and map blocks */ -@@ -5158,7 +5158,7 @@ +@@ -5160,7 +5160,7 @@ for (ptr = rse->rse_relation, end = ptr + rse->rse_count; ptr < end; ptr++) if ((*ptr)->nod_type == nod_relation) { - stream = (USHORT) (*ptr)->nod_arg[e_rel_stream]; -+ stream = (IPTR) (*ptr)->nod_arg[e_rel_stream]; ++ stream = (USHORT)(IPTR) (*ptr)->nod_arg[e_rel_stream]; if (!(csb->csb_rpt[stream].csb_plan)) ERR_post(gds_no_stream_plan, gds_arg_string, csb->csb_rpt[stream].csb_relation->rel_name, 0); -@@ -5211,7 +5211,7 @@ +@@ -5213,7 +5213,7 @@ /* find the tail for the relation specified in the rse */ - stream = (USHORT) plan_relation_node->nod_arg[e_rel_stream]; -+ stream = (IPTR) plan_relation_node->nod_arg[e_rel_stream]; ++ stream = (USHORT)(IPTR) plan_relation_node->nod_arg[e_rel_stream]; tail = &csb->csb_rpt[stream]; /* if the plan references a view, find the real base relation -@@ -5447,15 +5447,15 @@ +@@ -5449,15 +5449,15 @@ ptr < end; ptr++) { node = *ptr; if (node->nod_type == nod_relation) { - USHORT stream = (USHORT) node->nod_arg[e_rel_stream]; -+ USHORT stream = (IPTR) node->nod_arg[e_rel_stream]; ++ USHORT stream = (USHORT)(IPTR) node->nod_arg[e_rel_stream]; csb->csb_rpt[stream].csb_flags &= ~csb_active; } else if (node->nod_type == nod_procedure) { - USHORT stream = (USHORT) node->nod_arg[e_prc_stream]; -+ USHORT stream = (IPTR) node->nod_arg[e_prc_stream]; ++ USHORT stream = (USHORT)(IPTR) node->nod_arg[e_prc_stream]; csb->csb_rpt[stream].csb_flags &= ~csb_active; } else if (node->nod_type == nod_aggregate) { - USHORT stream = (USHORT) node->nod_arg[e_agg_stream]; -+ USHORT stream = (IPTR) node->nod_arg[e_agg_stream]; ++ USHORT stream = (USHORT)(IPTR) node->nod_arg[e_agg_stream]; assert(stream <= MAX_STREAMS); csb->csb_rpt[stream].csb_flags &= ~csb_active; } -@@ -5551,7 +5551,7 @@ +@@ -5553,7 +5553,7 @@ for (end = ptr + map->nod_count; ptr < end; ptr++) { assignment = *ptr; field = assignment->nod_arg[e_asgn_to]; - id = (USHORT) field->nod_arg[e_fld_id]; -+ id = (IPTR) field->nod_arg[e_fld_id]; ++ id = (USHORT)(IPTR) field->nod_arg[e_fld_id]; if (id >= format->fmt_count) { format->fmt_desc.resize(id + 1); } -@@ -5687,13 +5687,13 @@ +@@ -5689,13 +5689,13 @@ /* for aggregates, check current rse, if not found then check the sub-rse */ if (sub->nod_type == nod_aggregate) { - if ((stream == (USHORT) sub->nod_arg[e_rel_stream]) || -+ if ((stream == (IPTR) sub->nod_arg[e_rel_stream]) || ++ if ((stream == (USHORT)(IPTR) sub->nod_arg[e_rel_stream]) || (stream_in_rse(stream, (RSE) sub->nod_arg[e_agg_rse]))) return TRUE; /* do not mark as variant */ } if ((sub->nod_type == nod_relation) && - (stream == (USHORT) sub->nod_arg[e_rel_stream])) -+ (stream == (IPTR) sub->nod_arg[e_rel_stream])) ++ (stream == (USHORT)(IPTR) sub->nod_arg[e_rel_stream])) return TRUE; /* do not mark as variant */ } +diff -ur firebird-1.5.3.4870-orig/src/jrd/common.h firebird-1.5.3.4870/src/jrd/common.h +--- firebird-1.5.3.4870-orig/src/jrd/common.h 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/jrd/common.h 2006-03-17 01:32:29.000000000 -0500 +@@ -856,8 +856,8 @@ + + #define JRD_BUGCHK 15 /* facility code for bugcheck messages */ + #ifndef OFFSET +-#define OFFSET(struct,fld) ((int) &((struct) 0)->fld) +-#define OFFSETA(struct,fld) ((int) ((struct) 0)->fld) ++#define OFFSET(struct,fld) ((int)(IPTR) &((struct) 0)->fld) ++#define OFFSETA(struct,fld) ((int)(IPTR) ((struct) 0)->fld) + #endif + + #ifndef ODS_ALIGNMENT +diff -ur firebird-1.5.3.4870-orig/src/jrd/dpm.epp firebird-1.5.3.4870/src/jrd/dpm.epp +--- firebird-1.5.3.4870-orig/src/jrd/dpm.epp 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/jrd/dpm.epp 2006-03-17 01:32:29.000000000 -0500 +@@ -2119,7 +2119,7 @@ + + DEBUG if (stack) + while (*stack) +- CCH_precedence(tdbb, &rpb->rpb_window, (SLONG) LLS_POP(stack)); ++ CCH_precedence(tdbb, &rpb->rpb_window, (SLONG)(IPTR) LLS_POP(stack)); + + CCH_precedence(tdbb, &rpb->rpb_window, -rpb->rpb_transaction); + CCH_MARK(tdbb, &rpb->rpb_window); +@@ -2736,7 +2736,7 @@ + If the page need to be compressed, compress it. */ + + while (*stack) +- CCH_precedence(tdbb, &rpb->rpb_window, (SLONG) LLS_POP(stack)); ++ CCH_precedence(tdbb, &rpb->rpb_window, (SLONG)(IPTR) LLS_POP(stack)); + CCH_MARK(tdbb, &rpb->rpb_window); + i = page->dpg_count + ((slot) ? 0 : 1); + +diff -ur firebird-1.5.3.4870-orig/src/jrd/evl.cpp firebird-1.5.3.4870/src/jrd/evl.cpp +--- firebird-1.5.3.4870-orig/src/jrd/evl.cpp 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/jrd/evl.cpp 2006-03-17 01:32:29.000000000 -0500 +@@ -248,7 +248,7 @@ + arg_number = (int)(IPTR)node->nod_arg[e_arg_number]; + desc = &format->fmt_desc[arg_number]; + impure->vlu_desc.dsc_address = +- (UCHAR *) request + message->nod_impure + (int) desc->dsc_address; ++ (UCHAR *) request + message->nod_impure + (int)(IPTR) desc->dsc_address; + impure->vlu_desc.dsc_dtype = desc->dsc_dtype; + impure->vlu_desc.dsc_length = desc->dsc_length; + impure->vlu_desc.dsc_scale = desc->dsc_scale; +@@ -288,8 +288,8 @@ + // may happen. I checked triggers and insert/update statements. + // All seem to work fine. + record = +- request->req_rpb[(int) node->nod_arg[e_fld_stream]].rpb_record; +- EVL_field(0, record, (USHORT) node->nod_arg[e_fld_id], ++ request->req_rpb[(int)(IPTR) node->nod_arg[e_fld_stream]].rpb_record; ++ EVL_field(0, record, (USHORT)(IPTR) node->nod_arg[e_fld_id], + &impure->vlu_desc); + if (!impure->vlu_desc.dsc_address) + ERR_post(gds_read_only_field, 0); +@@ -359,7 +359,7 @@ + impure = (INV) ((SCHAR *) tdbb->tdbb_request + node->nod_impure); + SBM_reset(&impure->inv_bitmap); + desc = EVL_expr(tdbb, node->nod_arg[0]); +- id = 1 + 2 * (USHORT) node->nod_arg[1]; ++ id = 1 + 2 * (USHORT)(IPTR) node->nod_arg[1]; + numbers = desc->dsc_address; + numbers += id * sizeof(SLONG); + MOVE_FAST(numbers, &rel_dbkey, sizeof(SLONG)); +@@ -828,10 +828,10 @@ + } + message = node->nod_arg[e_arg_message]; + format = (FMT) message->nod_arg[e_msg_format]; +- desc = &format->fmt_desc[(int) node->nod_arg[e_arg_number]]; ++ desc = &format->fmt_desc[(int)(IPTR) node->nod_arg[e_arg_number]]; + + impure->vlu_desc.dsc_address = (UCHAR *) request + +- message->nod_impure + (int) desc->dsc_address; ++ message->nod_impure + (int)(IPTR) desc->dsc_address; + impure->vlu_desc.dsc_dtype = desc->dsc_dtype; + impure->vlu_desc.dsc_length = desc->dsc_length; + impure->vlu_desc.dsc_scale = desc->dsc_scale; +@@ -851,14 +851,14 @@ + case nod_field: + { + REC record = +- request->req_rpb[(int)node->nod_arg[e_fld_stream]].rpb_record; ++ request->req_rpb[(int)(IPTR)node->nod_arg[e_fld_stream]].rpb_record; + /* In order to "map a null to a default" value (in EVL_field()), + * the relation block is referenced. + * Reference: Bug 10116, 10424 + */ +- if (!EVL_field(request->req_rpb[(USHORT) node->nod_arg[e_fld_stream]].rpb_relation, ++ if (!EVL_field(request->req_rpb[(USHORT)(IPTR) node->nod_arg[e_fld_stream]].rpb_relation, + record, +- (USHORT) node->nod_arg[e_fld_id], ++ (USHORT)(IPTR) node->nod_arg[e_fld_id], + &impure->vlu_desc)) + { + request->req_flags |= req_null; +@@ -997,7 +997,7 @@ + ULONG extract_part; + + impure = (VLU) ((SCHAR *) request + node->nod_impure); +- extract_part = (ULONG) node->nod_arg[e_extract_part]; ++ extract_part = (ULONG)(IPTR) node->nod_arg[e_extract_part]; + value = EVL_expr(tdbb, node->nod_arg[e_extract_value]); + + impure->vlu_desc.dsc_dtype = dtype_short; +@@ -1173,8 +1173,8 @@ + + switch (node->nod_type) { + case nod_gen_id: /* return a 32-bit generator value */ +- impure->vlu_misc.vlu_long = (SLONG) DPM_gen_id(tdbb, +- (SLONG) ++ impure->vlu_misc.vlu_long = (SLONG)(IPTR) DPM_gen_id(tdbb, ++ (SLONG)(IPTR) + node->nod_arg + [e_gen_id], 0, + MOV_get_int64 +@@ -1189,7 +1189,7 @@ + + case nod_gen_id2: + impure->vlu_misc.vlu_int64 = DPM_gen_id(tdbb, +- (SLONG) ++ (SLONG)(IPTR) + node->nod_arg[e_gen_id], + 0, + MOV_get_int64(values[0], +@@ -1383,7 +1383,7 @@ + return FALSE; + } + +- desc->dsc_address = record->rec_data + (int) desc->dsc_address; ++ desc->dsc_address = record->rec_data + (int)(IPTR) desc->dsc_address; + + if (TEST_NULL(record, id)) { + desc->dsc_flags |= DSC_null; +@@ -1725,9 +1725,9 @@ + { + from = (*ptr)->nod_arg[e_asgn_from]; + field = (*ptr)->nod_arg[e_asgn_to]; +- id = (USHORT) field->nod_arg[e_fld_id]; ++ id = (USHORT)(IPTR) field->nod_arg[e_fld_id]; + record = +- request->req_rpb[(int) field->nod_arg[e_fld_stream]].rpb_record; ++ request->req_rpb[(int)(IPTR) field->nod_arg[e_fld_stream]].rpb_record; + impure = (VLUX) ((SCHAR *) request + from->nod_impure); + switch (from->nod_type) + { +@@ -3395,7 +3395,7 @@ + + request = tdbb->tdbb_request; + impure = (VLU) ((SCHAR *) request + node->nod_impure); +- rpb = &request->req_rpb[(int) node->nod_arg[0]]; ++ rpb = &request->req_rpb[(int)(IPTR) node->nod_arg[0]]; + relation = rpb->rpb_relation; + + /* Format dbkey as vector of relation id, record number */ +@@ -4500,7 +4500,7 @@ + + request = tdbb->tdbb_request; + impure = (VLU) ((SCHAR *) request + node->nod_impure); +- rpb = &request->req_rpb[(int) node->nod_arg[0]]; ++ rpb = &request->req_rpb[(int)(IPTR) node->nod_arg[0]]; + + /* If the current transaction has updated the record, the record version + * coming in from DSQL will have the original transaction # (or current +diff -ur firebird-1.5.3.4870-orig/src/jrd/exe.cpp firebird-1.5.3.4870/src/jrd/exe.cpp +--- firebird-1.5.3.4870-orig/src/jrd/exe.cpp 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/jrd/exe.cpp 2006-03-17 01:32:29.000000000 -0500 +@@ -375,8 +375,8 @@ + + if (to->nod_type == nod_field) + { +- SSHORT id = (USHORT) to->nod_arg[e_fld_id]; +- REC record = request->req_rpb[(int) to->nod_arg[e_fld_stream]].rpb_record; ++ SSHORT id = (USHORT)(IPTR) to->nod_arg[e_fld_id]; ++ REC record = request->req_rpb[(int)(IPTR) to->nod_arg[e_fld_stream]].rpb_record; + if (null) { + SET_NULL(record, id); + } else { +@@ -639,7 +639,7 @@ + message = request->req_message; + format = (FMT) message->nod_arg[e_msg_format]; + +- if (msg != (USHORT) message->nod_arg[e_msg_number]) ++ if (msg != (USHORT)(IPTR) message->nod_arg[e_msg_number]) + ERR_post(gds_req_sync, 0); + + if (length != format->fmt_length) +@@ -788,7 +788,7 @@ + for (ptr = node->nod_arg, end = ptr + node->nod_count; ptr < end; + ptr++) { + message = (*ptr)->nod_arg[e_send_message]; +- if ((USHORT) message->nod_arg[e_msg_number] == msg) { ++ if ((USHORT)(IPTR) message->nod_arg[e_msg_number] == msg) { + request->req_next = *ptr; + break; + } +@@ -798,7 +798,7 @@ + + format = (FMT) message->nod_arg[e_msg_format]; + +- if (msg != (USHORT) message->nod_arg[e_msg_number]) ++ if (msg != (USHORT)(IPTR) message->nod_arg[e_msg_number]) + ERR_post(gds_req_sync, 0); + + if (length != format->fmt_length) +@@ -1049,7 +1049,7 @@ + desc = &format->fmt_desc[n]; + if (!desc->dsc_address) + continue; +- p = record->rec_data + (SLONG) desc->dsc_address; ++ p = record->rec_data + (SLONG)(IPTR) desc->dsc_address; + if (TEST_NULL(record, n)) + { + if (length = desc->dsc_length) +@@ -1134,7 +1134,7 @@ + + request = tdbb->tdbb_request; + transaction = request->req_transaction; +- rpb = &request->req_rpb[(int) node->nod_arg[e_erase_stream]]; ++ rpb = &request->req_rpb[(int)(IPTR) node->nod_arg[e_erase_stream]]; + relation = rpb->rpb_relation; + + #ifdef PC_ENGINE +@@ -2015,7 +2015,7 @@ + case jrd_req::req_evaluate: + if (transaction != dbb->dbb_sys_trans) { + +- UCHAR operation = (UCHAR) node->nod_arg[e_sav_operation]; ++ UCHAR operation = (UCHAR)(IPTR) node->nod_arg[e_sav_operation]; + TEXT * node_savepoint_name = (TEXT*) node->nod_arg[e_sav_name]; + + // Skip the savepoint created by EXE_start +@@ -2328,7 +2328,7 @@ + break; + + case jrd_req::req_unwind: +- if ((request->req_label == (USHORT) node->nod_arg[e_lbl_label]) && ++ if ((request->req_label == (USHORT)(IPTR) node->nod_arg[e_lbl_label]) && + (request->req_flags & (req_leave | req_error_handler))) { + request->req_flags &= ~req_leave; + request->req_operation = jrd_req::req_return; +@@ -2342,7 +2342,7 @@ + case nod_leave: + request->req_flags |= req_leave; + request->req_operation = jrd_req::req_unwind; +- request->req_label = (USHORT) node->nod_arg[0]; ++ request->req_label = (USHORT)(IPTR) node->nod_arg[0]; + node = node->nod_parent; + break; + +@@ -2652,7 +2652,7 @@ + DSC *desc; + + desc = EVL_expr(tdbb, node->nod_arg[e_gen_value]); +- (void) DPM_gen_id(tdbb, (SLONG) node->nod_arg[e_gen_id], 1, ++ (void) DPM_gen_id(tdbb, (SLONG)(IPTR) node->nod_arg[e_gen_id], 1, + MOV_get_int64(desc, 0)); + request->req_operation = jrd_req::req_return; + } +@@ -2664,7 +2664,7 @@ + DSC *desc; + + desc = EVL_expr(tdbb, node->nod_arg[e_gen_value]); +- (void) DPM_gen_id(tdbb, (SLONG) node->nod_arg[e_gen_id], 1, ++ (void) DPM_gen_id(tdbb, (SLONG)(IPTR) node->nod_arg[e_gen_id], 1, + MOV_get_int64(desc, 0)); + request->req_operation = jrd_req::req_return; + } +@@ -2794,11 +2794,11 @@ + transaction = request->req_transaction; + impure = (STA) ((SCHAR *) request + node->nod_impure); + +- org_stream = (USHORT) node->nod_arg[e_mod_org_stream]; ++ org_stream = (USHORT)(IPTR) node->nod_arg[e_mod_org_stream]; + org_rpb = &request->req_rpb[org_stream]; + relation = org_rpb->rpb_relation; + +- new_stream = (USHORT) node->nod_arg[e_mod_new_stream]; ++ new_stream = (USHORT)(IPTR) node->nod_arg[e_mod_new_stream]; + new_rpb = &request->req_rpb[new_stream]; + + #ifdef PC_ENGINE +@@ -3795,7 +3795,7 @@ + JRD_REQ request = tdbb->tdbb_request; + JRD_TRA transaction = request->req_transaction; + STA impure = (STA) ((SCHAR *) request + node->nod_impure); +- SSHORT stream = (USHORT) node->nod_arg[e_sto_relation]->nod_arg[e_rel_stream]; ++ SSHORT stream = (USHORT)(IPTR) node->nod_arg[e_sto_relation]->nod_arg[e_rel_stream]; + RPB* rpb = &request->req_rpb[stream]; + JRD_REL relation = rpb->rpb_relation; + +@@ -4201,8 +4201,8 @@ + + if (node->nod_type == nod_field) + { +- stream = (USHORT) node->nod_arg[e_fld_stream]; +- id = (USHORT) node->nod_arg[e_fld_id]; ++ stream = (USHORT)(IPTR) node->nod_arg[e_fld_stream]; ++ id = (USHORT)(IPTR) node->nod_arg[e_fld_id]; + relation = request->req_rpb[stream].rpb_relation; + + if ((vector = relation->rel_fields) && +diff -ur firebird-1.5.3.4870-orig/src/jrd/ext.cpp firebird-1.5.3.4870/src/jrd/ext.cpp +--- firebird-1.5.3.4870-orig/src/jrd/ext.cpp 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/jrd/ext.cpp 2006-03-17 01:32:29.000000000 -0500 +@@ -266,7 +266,7 @@ + record = rpb->rpb_record; + format = record->rec_format; + +- offset = (SSHORT) format->fmt_desc[0].dsc_address; ++ offset = (SSHORT)(IPTR) format->fmt_desc[0].dsc_address; + p = record->rec_data + offset; + l = record->rec_length - offset; + +@@ -299,7 +299,7 @@ + continue; + if ( (literal = (LIT) field->fld_missing_value) ) { + desc = *desc_ptr; +- desc.dsc_address = record->rec_data + (int) desc.dsc_address; ++ desc.dsc_address = record->rec_data + (int)(IPTR) desc.dsc_address; + if (!MOV_compare(&literal->lit_desc, &desc)) + continue; + } +@@ -512,7 +512,7 @@ + desc_ptr->dsc_length && + TEST_NULL(record, i)) + { +- p = record->rec_data + (int) desc_ptr->dsc_address; ++ p = record->rec_data + (int)(IPTR) desc_ptr->dsc_address; + if ( (literal = (LIT) field->fld_missing_value) ) { + desc = *desc_ptr; + desc.dsc_address = p; +@@ -528,7 +528,7 @@ + } + } + +- offset = (USHORT) format->fmt_desc[0].dsc_address; ++ offset = (USHORT)(IPTR) format->fmt_desc[0].dsc_address; + p = record->rec_data + offset; + l = record->rec_length - offset; + +diff -ur firebird-1.5.3.4870-orig/src/jrd/gds.cpp firebird-1.5.3.4870/src/jrd/gds.cpp +--- firebird-1.5.3.4870-orig/src/jrd/gds.cpp 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/jrd/gds.cpp 2006-03-17 01:32:30.000000000 -0500 +@@ -2304,7 +2304,7 @@ + return result; + + if (stdio_flag) +- if (!(result = ib_fdopen((int) result, "w+"))) ++ if (!(result = ib_fdopen((int)(IPTR) result, "w+"))) + return (void *)-1; + + if (expanded_string) +diff -ur firebird-1.5.3.4870-orig/src/jrd/idx.cpp firebird-1.5.3.4870/src/jrd/idx.cpp +--- firebird-1.5.3.4870-orig/src/jrd/idx.cpp 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/jrd/idx.cpp 2006-03-17 01:32:30.000000000 -0500 +@@ -1055,12 +1055,12 @@ + index_number < idx->idx_foreign_primaries->count(); + index_number++) { + if (idx->idx_id != +- (UCHAR) (*idx->idx_foreign_primaries)[index_number]) continue; ++ (UCHAR)(IPTR) (*idx->idx_foreign_primaries)[index_number]) continue; + partner_relation = + MET_relation(tdbb, +- (int) (*idx->idx_foreign_relations)[index_number]); ++ (int)(IPTR) (*idx->idx_foreign_relations)[index_number]); + index_id = +- (USHORT) (*idx->idx_foreign_indexes)[index_number]; ++ (USHORT)(IPTR) (*idx->idx_foreign_indexes)[index_number]; + if ( (result = + check_partner_index(tdbb, relation, record, transaction, idx, + partner_relation, index_id)) ) +diff -ur firebird-1.5.3.4870-orig/src/jrd/inf.cpp firebird-1.5.3.4870/src/jrd/inf.cpp +--- firebird-1.5.3.4870-orig/src/jrd/inf.cpp 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/jrd/inf.cpp 2006-03-17 01:32:30.000000000 -0500 +@@ -972,7 +972,7 @@ + node = request->req_message; + if (item == gds_info_message_number) + length = +- INF_convert((SLONG) node->nod_arg[e_msg_number], ++ INF_convert((SLONG)(IPTR) node->nod_arg[e_msg_number], + buffer_ptr); + else { + format = (FMT) node->nod_arg[e_msg_format]; +diff -ur firebird-1.5.3.4870-orig/src/jrd/met.epp firebird-1.5.3.4870/src/jrd/met.epp +--- firebird-1.5.3.4870-orig/src/jrd/met.epp 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/jrd/met.epp 2006-03-17 01:32:31.000000000 -0500 +@@ -932,7 +932,7 @@ + if (desc->dsc_address) + { + format->fmt_length = +- (ULONG) desc->dsc_address + desc->dsc_length; ++ (ULONG)(IPTR) desc->dsc_address + desc->dsc_length; + break; + } + } +@@ -2133,13 +2133,13 @@ + index_number < references->frgn_reference_ids->count(); + index_number++) + { +- if (idx->idx_id == (UCHAR) (*references->frgn_reference_ids) ++ if (idx->idx_id == (UCHAR)(IPTR) (*references->frgn_reference_ids) + [index_number]) + { + idx->idx_primary_relation = +- (USHORT) (*references->frgn_relations)[index_number]; ++ (USHORT)(IPTR) (*references->frgn_relations)[index_number]; + idx->idx_primary_index = +- (UCHAR) (*references->frgn_indexes)[index_number]; ++ (UCHAR)(IPTR) (*references->frgn_indexes)[index_number]; + return TRUE; + } + } +@@ -2155,7 +2155,7 @@ + index_number < dependencies->prim_reference_ids->count(); + index_number++) + { +- if (idx->idx_id == (UCHAR) (*dependencies->prim_reference_ids) ++ if (idx->idx_id == (UCHAR)(IPTR) (*dependencies->prim_reference_ids) + [index_number]) + { + idx->idx_foreign_primaries = +@@ -3001,10 +3001,10 @@ + { + if ( (node = csb_->csb_rpt[i].csb_message) ) + { +- if ((int) node->nod_arg[e_msg_number] == 0) ++ if ((int)(IPTR) node->nod_arg[e_msg_number] == 0) + { + procedure->prc_input_msg = node; +- } else if ((int) node->nod_arg[e_msg_number] == 1) ++ } else if ((int)(IPTR) node->nod_arg[e_msg_number] == 1) + { + procedure->prc_output_msg = node; + } +@@ -4580,7 +4580,7 @@ + node = (JRD_NOD) LLS_POP(&csb->csb_dependencies); + if (!node->nod_arg[e_dep_object]) + continue; +- dpdo_type = (SSHORT) node->nod_arg[e_dep_object_type]; ++ dpdo_type = (SSHORT)(IPTR) node->nod_arg[e_dep_object_type]; + relation = NULL; + procedure = NULL; + switch (dpdo_type) { +@@ -4593,13 +4593,13 @@ + dpdo_name = (TEXT*) procedure->prc_name->str_data; + break; + case obj_exception: +- number = (SLONG) node->nod_arg [e_dep_object]; ++ number = (SLONG)(IPTR) node->nod_arg [e_dep_object]; + MET_lookup_exception (tdbb, number, name, NULL); + dpdo_name = name; + break; + /* CVC: Here I'm going to track those pesky things named generators and UDFs. */ + case obj_generator: +- number = (SLONG) node->nod_arg [e_dep_object]; ++ number = (SLONG)(IPTR) node->nod_arg [e_dep_object]; + MET_lookup_generator_id (tdbb, number, name); + dpdo_name = name; + break; +@@ -4617,7 +4617,7 @@ + { + if (field_node->nod_type == nod_field) + { +- fld_id = (SSHORT) field_node->nod_arg[0]; ++ fld_id = (SSHORT)(IPTR) field_node->nod_arg[0]; + if (relation) + { + if ( (field = MET_get_field(relation, fld_id)) ) +diff -ur firebird-1.5.3.4870-orig/src/jrd/opt.cpp firebird-1.5.3.4870/src/jrd/opt.cpp +--- firebird-1.5.3.4870-orig/src/jrd/opt.cpp 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/jrd/opt.cpp 2006-03-17 01:32:31.000000000 -0500 +@@ -380,7 +380,7 @@ + + if (node->nod_type != nod_rse) + { +- stream = (USHORT) node->nod_arg[STREAM_INDEX(node)]; ++ stream = (USHORT)(IPTR) node->nod_arg[STREAM_INDEX(node)]; + assert(stream <= MAX_UCHAR); + assert(beds[0] < MAX_STREAMS && beds[0] < MAX_UCHAR); + beds[++beds[0]] = (UCHAR) stream; +@@ -400,7 +400,7 @@ + (USHORT) (key_streams[0] - i)); + assert(local_streams[0] < MAX_STREAMS && local_streams[0] < MAX_UCHAR); + local_streams[++local_streams[0]] = +- (UCHAR) node->nod_arg[e_uni_stream]; ++ (UCHAR)(IPTR) node->nod_arg[e_uni_stream]; + } + else if (node->nod_type == nod_aggregate) { + assert((int)node->nod_arg[e_agg_stream] <= MAX_STREAMS); +@@ -408,13 +408,13 @@ + rsb = gen_aggregate(tdbb, opt_, node); + assert(local_streams[0] < MAX_STREAMS && local_streams[0] < MAX_UCHAR); + local_streams[++local_streams[0]] = +- (UCHAR) node->nod_arg[e_agg_stream]; ++ (UCHAR)(IPTR) node->nod_arg[e_agg_stream]; + } + else if (node->nod_type == nod_procedure) { + rsb = gen_procedure(tdbb, opt_, node); + assert(local_streams[0] < MAX_STREAMS && local_streams[0] < MAX_UCHAR); + local_streams[++local_streams[0]] = +- (UCHAR) node->nod_arg[e_prc_stream]; ++ (UCHAR)(IPTR) node->nod_arg[e_prc_stream]; + } + else if (node->nod_type == nod_rse) { + compute_rse_streams(csb, (RSE) node, beds); +@@ -895,7 +895,7 @@ + + /* Make sure we have the correct stream */ + +- if ((USHORT) dbkey->nod_arg[0] != stream) ++ if ((USHORT)(IPTR) dbkey->nod_arg[0] != stream) + return NULL; + + /* If this is a dbkey for the appropriate stream, it's invertable */ +@@ -1687,7 +1687,7 @@ + switch (node->nod_type) { + case nod_field: + +- n = (USHORT) node->nod_arg[e_fld_stream]; ++ n = (USHORT)(IPTR) node->nod_arg[e_fld_stream]; + + if (allowOnlyCurrentStream) { + if (n != stream) { +@@ -1713,7 +1713,7 @@ + + case nod_dbkey: + +- n = (USHORT) node->nod_arg[0]; ++ n = (USHORT)(IPTR) node->nod_arg[0]; + + if (allowOnlyCurrentStream) { + if (n != stream) { +@@ -1784,7 +1784,7 @@ + + for (ptr = rse->rse_relation, end = ptr + rse->rse_count; ptr < end; ptr++) { + if ((*ptr)->nod_type != nod_rse) { +- n = (USHORT) (*ptr)->nod_arg[STREAM_INDEX((*ptr))]; ++ n = (USHORT)(IPTR) (*ptr)->nod_arg[STREAM_INDEX((*ptr))]; + csb->csb_rpt[n].csb_flags |= csb_active; + } + } +@@ -1821,7 +1821,7 @@ + { + if ((*ptr)->nod_type != nod_rse) + { +- n = (USHORT) (*ptr)->nod_arg[STREAM_INDEX((*ptr))]; ++ n = (USHORT)(IPTR) (*ptr)->nod_arg[STREAM_INDEX((*ptr))]; + csb->csb_rpt[n].csb_flags &= ~csb_active; + } + } +@@ -1862,12 +1862,12 @@ + + switch (node->nod_type) { + case nod_field: +- n = (USHORT) node->nod_arg[e_fld_stream]; ++ n = (USHORT)(IPTR) node->nod_arg[e_fld_stream]; + SET_DEP_BIT(dependencies, n); + return; + + case nod_dbkey: +- n = (USHORT) node->nod_arg[0]; ++ n = (USHORT)(IPTR) node->nod_arg[0]; + SET_DEP_BIT(dependencies, n); + return; + +@@ -1923,7 +1923,7 @@ + + for (ptr = rse->rse_relation, end = ptr + rse->rse_count; ptr < end; ptr++) { + if ((*ptr)->nod_type != nod_rse) { +- n = (USHORT) (*ptr)->nod_arg[STREAM_INDEX((*ptr))]; ++ n = (USHORT)(IPTR) (*ptr)->nod_arg[STREAM_INDEX((*ptr))]; + CLEAR_DEP_BIT(dependencies, n); + } + } +@@ -1951,7 +1951,7 @@ + + if (node->nod_type == nod_relation) { + assert(streams[0] < MAX_STREAMS && streams[0] < MAX_UCHAR); +- streams[++streams[0]] = (UCHAR) node->nod_arg[e_rel_stream]; ++ streams[++streams[0]] = (UCHAR)(IPTR) node->nod_arg[e_rel_stream]; + } + else if (node->nod_type == nod_union) { + clauses = node->nod_arg[e_uni_clauses]; +@@ -1991,7 +1991,7 @@ + node = *ptr; + if (node->nod_type != nod_rse) { + assert(streams[0] < MAX_STREAMS && streams[0] < MAX_UCHAR); +- streams[++streams[0]] = (UCHAR) node->nod_arg[STREAM_INDEX(node)]; ++ streams[++streams[0]] = (UCHAR)(IPTR) node->nod_arg[STREAM_INDEX(node)]; + } + else { + compute_rse_streams(csb, (RSE) node, streams); +@@ -3289,7 +3289,7 @@ + JRD_NOD dbkey_temp, *ptr, *end; + DEV_BLKCHK(dbkey, type_nod); + if (dbkey->nod_type == nod_dbkey) { +- if ((USHORT) dbkey->nod_arg[0] == stream) ++ if ((USHORT)(IPTR) dbkey->nod_arg[0] == stream) + return dbkey; + else { + *position = *position + 1; +@@ -3550,7 +3550,7 @@ + + temp[0]++; + relation_node = plan_node->nod_arg[e_retrieve_relation]; +- temp[temp[0]] = (UCHAR) relation_node->nod_arg[e_rel_stream]; ++ temp[temp[0]] = (UCHAR)(IPTR) relation_node->nod_arg[e_rel_stream]; + } + + // just because the user specified a join does not mean that +@@ -3724,7 +3724,7 @@ + rsb->rsb_type = rsb_aggregate; + assert((int)node->nod_arg[e_agg_stream] <= MAX_STREAMS); + assert((int)node->nod_arg[e_agg_stream] <= MAX_UCHAR); +- rsb->rsb_stream = (UCHAR) node->nod_arg[e_agg_stream]; ++ rsb->rsb_stream = (UCHAR)(IPTR) node->nod_arg[e_agg_stream]; + rsb->rsb_format = csb->csb_rpt[rsb->rsb_stream].csb_format; + rsb->rsb_next = OPT_compile(tdbb, csb, rse, NULL); + rsb->rsb_arg[0] = (RSB) node; +@@ -4088,8 +4088,8 @@ + idx->idx_rpt; ptr < end; ptr++, idx_tail++) { + node = *ptr; + if (node->nod_type != nod_field +- || (USHORT) node->nod_arg[e_fld_stream] != stream +- || (USHORT) node->nod_arg[e_fld_id] != idx_tail->idx_field ++ || (USHORT)(IPTR) node->nod_arg[e_fld_stream] != stream ++ || (USHORT)(IPTR) node->nod_arg[e_fld_id] != idx_tail->idx_field + || ptr[2*sort->nod_count] /* do not use index if NULLS FIRST is used */ + #ifdef SCROLLABLE_CURSORS + ) +@@ -4249,7 +4249,7 @@ + { + stream_ptr[i]->stream_rsb = NULL; + stream_ptr[i]->stream_num = +- (USHORT) node->nod_arg[STREAM_INDEX(node)]; ++ (USHORT)(IPTR) node->nod_arg[STREAM_INDEX(node)]; + } + } + +@@ -4327,10 +4327,10 @@ + SET_TDBB(tdbb); + csb = opt->opt_csb; + procedure = MET_lookup_procedure_id(tdbb, +- (SSHORT)node->nod_arg[e_prc_procedure], FALSE, FALSE, 0); ++ (SSHORT)(IPTR)node->nod_arg[e_prc_procedure], FALSE, FALSE, 0); + rsb = FB_NEW_RPT(*tdbb->tdbb_default, RSB_PRC_count) Rsb(); + rsb->rsb_type = rsb_procedure; +- rsb->rsb_stream = (UCHAR) node->nod_arg[e_prc_stream]; ++ rsb->rsb_stream = (UCHAR)(IPTR) node->nod_arg[e_prc_stream]; + rsb->rsb_procedure = procedure; + rsb->rsb_format = procedure->prc_format; + rsb->rsb_impure = CMP_impure(csb, sizeof(struct irsb_procedure)); +@@ -4943,8 +4943,8 @@ + for (node_ptr = sort->nod_arg; node_ptr < end_node; node_ptr++) { + node = *node_ptr; + if (node->nod_type == nod_field +- && (USHORT) node->nod_arg[e_fld_stream] == *ptr +- && (USHORT) node->nod_arg[e_fld_id] == id) { ++ && (USHORT)(IPTR) node->nod_arg[e_fld_stream] == *ptr ++ && (USHORT)(IPTR) node->nod_arg[e_fld_id] == id) { + desc = &descriptor; + CMP_get_desc(tdbb, csb, node, desc); + /* International type text has a computed key */ +@@ -5041,8 +5041,8 @@ + map_item->smb_desc.dsc_address = (UCHAR *) map_length; + map_length += desc->dsc_length; + if (node->nod_type == nod_field) { +- map_item->smb_stream = (USHORT) node->nod_arg[e_fld_stream]; +- map_item->smb_field_id = (USHORT) node->nod_arg[e_fld_id]; ++ map_item->smb_stream = (USHORT)(IPTR) node->nod_arg[e_fld_stream]; ++ map_item->smb_field_id = (USHORT)(IPTR) node->nod_arg[e_fld_id]; + } + } + +@@ -5054,8 +5054,8 @@ + field has already been mentioned as a sort key, don't bother to repeat + it. */ + while (stream_stack) { +- id = (USHORT) LLS_POP(&id_stack); +- stream = (USHORT) LLS_POP(&stream_stack); ++ id = (USHORT)(IPTR) LLS_POP(&id_stack); ++ stream = (USHORT)(IPTR) LLS_POP(&stream_stack); + format = CMP_format(tdbb, csb, stream); + desc = &format->fmt_desc[id]; + if (id >= format->fmt_count || desc->dsc_length == 0) +@@ -5384,7 +5384,7 @@ + rsb = FB_NEW_RPT(*tdbb->tdbb_default, count + nstreams + 1) Rsb(); + rsb->rsb_type = rsb_union; + rsb->rsb_count = count; +- rsb->rsb_stream = (UCHAR) union_node->nod_arg[e_uni_stream]; ++ rsb->rsb_stream = (UCHAR)(IPTR) union_node->nod_arg[e_uni_stream]; + rsb->rsb_format = csb->csb_rpt[rsb->rsb_stream].csb_format; + rsb->rsb_impure = CMP_impure(csb, sizeof(struct irsb)); + rsb_ptr = rsb->rsb_arg; +@@ -5926,8 +5926,8 @@ + field = boolean->nod_arg[0]; + if (field->nod_type != nod_field) + return NULL; +- if ((USHORT) field->nod_arg[e_fld_stream] != stream || +- (USHORT) field->nod_arg[e_fld_id] != idx->idx_rpt[0].idx_field) ++ if ((USHORT)(IPTR) field->nod_arg[e_fld_stream] != stream || ++ (USHORT)(IPTR) field->nod_arg[e_fld_id] != idx->idx_rpt[0].idx_field) + return NULL; + node = make_index_node(tdbb, relation, opt->opt_csb, idx); + retrieval = (IRB) node->nod_arg[e_idx_retrieval]; +@@ -5995,8 +5995,8 @@ + return NULL; + } + +- if ((USHORT) field->nod_arg[e_fld_stream] != stream || +- (USHORT) field->nod_arg[e_fld_id] != idx->idx_rpt[0].idx_field ++ if ((USHORT)(IPTR) field->nod_arg[e_fld_stream] != stream || ++ (USHORT)(IPTR) field->nod_arg[e_fld_id] != idx->idx_rpt[0].idx_field + || !(idx->idx_rpt[0].idx_itype == idx_string + || idx->idx_rpt[0].idx_itype == idx_byte_array + || idx->idx_rpt[0].idx_itype == idx_metadata +@@ -6094,10 +6094,10 @@ + if (access_type) { + for (arg = access_type->nod_arg, end = arg + plan_count; + arg < end; arg += 3) { +- if (relation_id != (SSHORT) * arg) ++ if (relation_id != (SSHORT)(IPTR) * arg) + /* index %s cannot be used in the specified plan */ + ERR_post(gds_index_unused, gds_arg_string, *(arg + 2), 0); +- if (idx->idx_id == (USHORT) * (arg + 1)) ++ if (idx->idx_id == (USHORT)(IPTR) * (arg + 1)) + if (access_type->nod_type == nod_navigational) + idx->idx_runtime_flags |= idx_plan_navigate; + else /* nod_indices */ +@@ -6169,13 +6169,13 @@ + If left side is still not a field, give up */ + + if (match->nod_type != nod_field || +- (USHORT) match->nod_arg[e_fld_stream] != stream || ++ (USHORT)(IPTR) match->nod_arg[e_fld_stream] != stream || + !computable(opt->opt_csb, value, stream, true, false)) + { + match = value; + value = boolean->nod_arg[0]; + if (match->nod_type != nod_field || +- (USHORT) match->nod_arg[e_fld_stream] != stream || ++ (USHORT)(IPTR) match->nod_arg[e_fld_stream] != stream || + !computable(opt->opt_csb, value, stream, true, false)) + { + return 0; +@@ -6194,7 +6194,7 @@ + #ifdef EXPRESSION_INDICES + (idx->idx_expression || + #endif +- ((USHORT) match->nod_arg[e_fld_id] == idx->idx_rpt[i].idx_field) ++ ((USHORT)(IPTR) match->nod_arg[e_fld_id] == idx->idx_rpt[i].idx_field) + #ifdef EXPRESSION_INDICES + ) + #endif +@@ -6582,7 +6582,7 @@ + return FALSE; + for (streams = river->riv_streams, end = + streams + river->riv_count; streams < end; streams++) +- if ((USHORT) node->nod_arg[e_fld_stream] == *streams) ++ if ((USHORT)(IPTR) node->nod_arg[e_fld_stream] == *streams) + return TRUE; + return FALSE; + } +@@ -6779,7 +6779,7 @@ + ptr < end; ptr++) { + node = *ptr; + if (node->nod_type != nod_rse) { +- stream = (USHORT) node->nod_arg[STREAM_INDEX(node)]; ++ stream = (USHORT)(IPTR) node->nod_arg[STREAM_INDEX(node)]; + csb->csb_rpt[stream].csb_flags &= ~csb_active; + } + else +diff -ur firebird-1.5.3.4870-orig/src/jrd/par.cpp firebird-1.5.3.4870/src/jrd/par.cpp +--- firebird-1.5.3.4870-orig/src/jrd/par.cpp 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/jrd/par.cpp 2006-03-17 01:32:31.000000000 -0500 +@@ -2518,7 +2518,7 @@ + node->nod_arg[e_agg_rse] = parse(tdbb, csb, TYPE_RSE); + node->nod_arg[e_agg_group] = parse(tdbb, csb, OTHER); + node->nod_arg[e_agg_map] = +- par_map(tdbb, csb, (USHORT) node->nod_arg[e_agg_stream]); ++ par_map(tdbb, csb, (USHORT)(IPTR) node->nod_arg[e_agg_stream]); + break; + + case blr_group_by: +diff -ur firebird-1.5.3.4870-orig/src/jrd/rse.cpp firebird-1.5.3.4870/src/jrd/rse.cpp +--- firebird-1.5.3.4870-orig/src/jrd/rse.cpp 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/jrd/rse.cpp 2006-03-17 01:32:31.000000000 -0500 +@@ -730,8 +730,8 @@ + /* Initialize the record number of each stream in the union */ + + ptr = &rsb->rsb_arg[rsb->rsb_count]; +- for (end = ptr + (USHORT) * ptr; ++ptr <= end;) +- request->req_rpb[(USHORT) * ptr].rpb_number = -1; ++ for (end = ptr + (USHORT)(IPTR) * ptr; ++ptr <= end;) ++ request->req_rpb[(USHORT)(IPTR) * ptr].rpb_number = -1; + + rsb = rsb->rsb_arg[0]; + } +@@ -2914,7 +2914,7 @@ + request = tdbb->tdbb_request; + stack = (LLS) rsb->rsb_arg[streams]; + for (; stack; stack = stack->lls_next) { +- rpb = &request->req_rpb[(USHORT) stack->lls_object]; ++ rpb = &request->req_rpb[(USHORT)(IPTR) stack->lls_object]; + + /* Make sure a record block has been allocated. If there isn't + one, first find the format, then allocate the record block */ +@@ -2972,7 +2972,7 @@ + list that contains the data to send back + */ + if (IS_INTL_DATA(&item->smb_desc) && +- (USHORT) item->smb_desc.dsc_address < ++ (USHORT)(IPTR) item->smb_desc.dsc_address < + map->smb_key_length * sizeof(ULONG)) continue; + + rpb = &request->req_rpb[item->smb_stream]; +@@ -3238,7 +3238,7 @@ + the sort record, then want to sort by language dependent order */ + + if (IS_INTL_DATA(&item->smb_desc) && +- (USHORT) item->smb_desc.dsc_address < ++ (USHORT)(IPTR) item->smb_desc.dsc_address < + map->smb_key_length * sizeof(ULONG)) { + INTL_string_to_key(tdbb, INTL_INDEX_TYPE(&item->smb_desc), + from, &to, FALSE); +diff -ur firebird-1.5.3.4870-orig/src/jrd/sdl.cpp firebird-1.5.3.4870/src/jrd/sdl.cpp +--- firebird-1.5.3.4870-orig/src/jrd/sdl.cpp 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/jrd/sdl.cpp 2006-03-17 01:32:31.000000000 -0500 +@@ -699,7 +699,7 @@ + } + element_desc = array_desc->ads_rpt[value].ads_desc; + element_desc.dsc_address = (BLOB_PTR *) arg->sdl_arg_array + +- (SLONG) element_desc.dsc_address + ++ (SLONG)(IPTR) element_desc.dsc_address + + (array_desc->ads_element_length * subscript); + + /* Is this element within the array bounds? */ +diff -ur firebird-1.5.3.4870-orig/src/qli/command.cpp firebird-1.5.3.4870/src/qli/command.cpp +--- firebird-1.5.3.4870-orig/src/qli/command.cpp 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/qli/command.cpp 2006-03-17 01:32:33.000000000 -0500 +@@ -311,32 +311,32 @@ + ptr = node->syn_arg; + + for (i = 0; i < node->syn_count; i++) { +- foo = (USHORT) * ptr++; ++ foo = (USHORT)(IPTR) * ptr++; + sw = (ENUM set_t) foo; + value = *ptr++; + switch (sw) { + case set_blr: +- QLI_blr = (USHORT) value; ++ QLI_blr = (USHORT)(IPTR) value; + break; + + case set_statistics: +- QLI_statistics = (USHORT) value; ++ QLI_statistics = (USHORT)(IPTR) value; + break; + + case set_columns: +- QLI_name_columns = QLI_columns = (USHORT) value; ++ QLI_name_columns = QLI_columns = (USHORT)(IPTR) value; + break; + + case set_lines: +- QLI_lines = (USHORT) value; ++ QLI_lines = (USHORT)(IPTR) value; + break; + + case set_semi: +- QLI_semi = (USHORT) value; ++ QLI_semi = (USHORT)(IPTR) value; + break; + + case set_echo: +- QLI_echo = (USHORT) value; ++ QLI_echo = (USHORT)(IPTR) value; + break; + + case set_form: +@@ -399,7 +399,7 @@ + break; + + case set_count: +- QLI_count = (USHORT) value; ++ QLI_count = (USHORT)(IPTR) value; + break; + + case set_charset: +diff -ur firebird-1.5.3.4870-orig/src/qli/expand.cpp firebird-1.5.3.4870/src/qli/expand.cpp +--- firebird-1.5.3.4870-orig/src/qli/expand.cpp 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/qli/expand.cpp 2006-03-17 01:32:33.000000000 -0500 +@@ -2220,7 +2220,7 @@ + for (i = 0; i < node->nod_count; i++) { + expr = *syn_ptr++; + if (expr->syn_type == nod_position) { +- position = (USHORT) expr->syn_arg[0]; ++ position = (USHORT)(IPTR) expr->syn_arg[0]; + if (!list || !position || position > list->nod_count) + IBERROR(152); /* Msg152 invalid ORDER BY ordinal */ + item = (ITM) list->nod_arg[position - 1]; +diff -ur firebird-1.5.3.4870-orig/src/qli/meta.epp firebird-1.5.3.4870/src/qli/meta.epp +--- firebird-1.5.3.4870-orig/src/qli/meta.epp 2006-03-17 01:39:04.000000000 -0500 ++++ firebird-1.5.3.4870/src/qli/meta.epp 2006-03-17 01:32:33.000000000 -0500 +@@ -3795,7 +3795,7 @@ + RLB rlb; + + +- privileges = (USHORT) node->syn_arg[s_grant_privileges]; ++ privileges = (USHORT)(IPTR) node->syn_arg[s_grant_privileges]; + relation = (QLI_REL) node->syn_arg[s_grant_relation]; + relation->rel_database = database = setup_update(relation->rel_database); + relation_name = relation->rel_symbol->sym_string; +diff -Naur firebird-1.5.3.4870.old/src/alice/alice.cpp firebird-1.5.3.4870/src/alice/alice.cpp +--- firebird-1.5.3.4870.old/src/alice/alice.cpp 2006-08-06 06:47:26.000000000 +0200 ++++ firebird-1.5.3.4870/src/alice/alice.cpp 2006-08-06 07:59:27.000000000 +0200 +@@ -129,7 +129,7 @@ + ALICE_gfix( service->svc_argc, + service->svc_argv, + output_thread, +- (SLONG) service); ++ (SLONG)(IPTR) service); + + // Mark service thread as finished. + // If service is detached, cleanup memory being used by service. +diff -Naur firebird-1.5.3.4870.old/src/burp/burp.cpp firebird-1.5.3.4870/src/burp/burp.cpp +--- firebird-1.5.3.4870.old/src/burp/burp.cpp 2006-08-06 06:47:20.000000000 +0200 ++++ firebird-1.5.3.4870/src/burp/burp.cpp 2006-08-06 07:58:54.000000000 +0200 +@@ -181,7 +181,7 @@ + int exit_code; + + exit_code = BURP_gbak(service->svc_argc, service->svc_argv, +- output_netware, (SLONG) service); ++ output_netware, (SLONG) (IPTR) service); + + /* Mark service thread as finished. */ + /* If service is detached, cleanup memory being used by service. */ +diff -Naur firebird-1.5.3.4870.old/src/burp/canonical.cpp firebird-1.5.3.4870/src/burp/canonical.cpp +--- firebird-1.5.3.4870.old/src/burp/canonical.cpp 2006-08-06 06:47:20.000000000 +0200 ++++ firebird-1.5.3.4870/src/burp/canonical.cpp 2006-08-06 07:54:25.000000000 +0200 +@@ -502,7 +502,7 @@ + UCHAR *p; + SSHORT n; + +- p = buffer + (int) desc->dsc_address; ++ p = buffer + (int) (IPTR)desc->dsc_address; + + switch (desc->dsc_dtype) + { +diff -Naur firebird-1.5.3.4870.old/src/dsql/ddl.cpp firebird-1.5.3.4870/src/dsql/ddl.cpp +--- firebird-1.5.3.4870.old/src/dsql/ddl.cpp 2006-08-06 06:47:20.000000000 +0200 ++++ firebird-1.5.3.4870/src/dsql/ddl.cpp 2006-08-06 07:36:46.000000000 +0200 +@@ -1126,12 +1126,12 @@ + if (constant) + { + request->append_number(gds_dyn_trg_sequence, +- (SSHORT)(SLONG) (constant ? constant->nod_arg[0] : 0)); ++ (SSHORT)(SLONG)(IPTR) (constant ? constant->nod_arg[0] : 0)); + } + + if ((constant = node->nod_arg[e_cnstr_type]) != NULL) + { +- const SSHORT type = (SSHORT)(SLONG) constant->nod_arg[0]; ++ const SSHORT type = (SSHORT)(SLONG)(IPTR) constant->nod_arg[0]; + request->append_number(gds_dyn_trg_type, type); + } + +@@ -1270,7 +1270,7 @@ + + switch (element->nod_type) { + case nod_file_length: +- start = (SLONG) (element->nod_arg[0]) + 1; ++ start = (SLONG) (IPTR) (element->nod_arg[0]) + 1; + break; + + default: +@@ -1336,25 +1336,25 @@ + + case nod_group_commit_wait: + request->append_uchar(gds_dyn_log_group_commit_wait); +- temp_long = (SLONG) (element->nod_arg[0]); ++ temp_long = (SLONG) (IPTR) (element->nod_arg[0]); + request->append_ulong_with_length(temp_long); + break; + + case nod_check_point_len: + request->append_uchar(gds_dyn_log_check_point_length); +- temp_long = (SLONG) (element->nod_arg[0]); ++ temp_long = (SLONG) (IPTR) (element->nod_arg[0]); + request->append_ulong_with_length(temp_long); + break; + + case nod_num_log_buffers: + request->append_uchar(gds_dyn_log_num_of_buffers); +- temp_short = (SSHORT)(SLONG) (element->nod_arg[0]); ++ temp_short = (SSHORT)(SLONG) (IPTR) (element->nod_arg[0]); + request->append_ushort_with_length(temp_short); + break; + + case nod_log_buffer_size: + request->append_uchar(gds_dyn_log_buffer_size); +- temp_short = (SSHORT)(SLONG) (element->nod_arg[0]); ++ temp_short = (SSHORT)(SLONG) (IPTR) (element->nod_arg[0]); + request->append_ushort_with_length(temp_short); + break; + +@@ -1637,11 +1637,11 @@ + request->append_number(gds_dyn_def_dimension, position); + DSQL_NOD element = *ptr++; + request->append_uchar(gds_dyn_dim_lower); +- SLONG lrange = (SLONG) (element->nod_arg[0]); ++ SLONG lrange = (SLONG) (IPTR) (element->nod_arg[0]); + request->append_ulong_with_length(lrange); + element = *ptr; + request->append_uchar(gds_dyn_dim_upper); +- SLONG hrange = (SLONG) (element->nod_arg[0]); ++ SLONG hrange = (SLONG) (IPTR) (element->nod_arg[0]); + request->append_ulong_with_length(hrange); + request->append_uchar(gds_dyn_end); + if (lrange >= hrange) +@@ -2062,9 +2062,9 @@ + request->append_cstring(gds_dyn_def_filter, + ((STR) (ptr[e_filter_name]))->str_data); + request->append_number(gds_dyn_filter_in_subtype, +- (SSHORT)(SLONG) ((ptr[e_filter_in_type])->nod_arg[0])); ++ (SSHORT)(SLONG) (IPTR) ((ptr[e_filter_in_type])->nod_arg[0])); + request->append_number(gds_dyn_filter_out_subtype, +- (SSHORT)(SLONG) ((ptr[e_filter_out_type])->nod_arg[0])); ++ (SSHORT)(SLONG) (IPTR) ((ptr[e_filter_out_type])->nod_arg[0])); + request->append_cstring(gds_dyn_func_entry_point, + ((STR) (ptr[e_filter_entry_pt]))->str_data); + request->append_cstring(gds_dyn_func_module_name, +@@ -2670,16 +2670,16 @@ + gds_arg_gds, gds_dsql_shadow_number_err, 0); + } + +- request->append_number(gds_dyn_def_shadow, (SSHORT)(SLONG) (ptr[e_shadow_number])); ++ request->append_number(gds_dyn_def_shadow, (SSHORT)(SLONG) (IPTR) (ptr[e_shadow_number])); + request->append_cstring(gds_dyn_def_file, ((STR) (ptr[e_shadow_name]))->str_data); + request->append_number(gds_dyn_shadow_man_auto, +- (SSHORT)(SLONG) ((ptr[e_shadow_man_auto])->nod_arg[0])); ++ (SSHORT)(SLONG) (IPTR) ((ptr[e_shadow_man_auto])->nod_arg[0])); + request->append_number(gds_dyn_shadow_conditional, +- (SSHORT)(SLONG) ((ptr[e_shadow_conditional])->nod_arg[0])); ++ (SSHORT)(SLONG) (IPTR) ((ptr[e_shadow_conditional])->nod_arg[0])); + + request->append_file_start(0); + +- SLONG length = (SLONG) ptr[e_shadow_length]; ++ SLONG length = (SLONG) (IPTR) ptr[e_shadow_length]; + request->append_file_length(length); + + request->append_uchar(gds_dyn_end); +@@ -2806,15 +2806,15 @@ + + if (constant = node->nod_arg[e_trg_active]) + request->append_number(gds_dyn_trg_inactive, +- (SSHORT)(SLONG) constant->nod_arg[0]); ++ (SSHORT)(SLONG) (IPTR) constant->nod_arg[0]); + + if (constant = node->nod_arg[e_trg_position]) + request->append_number(gds_dyn_trg_sequence, +- (SSHORT)(SLONG) constant->nod_arg[0]); ++ (SSHORT)(SLONG) (IPTR) constant->nod_arg[0]); + + if (constant = node->nod_arg[e_trg_type]) { +- request->append_number(gds_dyn_trg_type, (SSHORT)(SLONG) constant->nod_arg[0]); +- trig_type = (USHORT)(ULONG) constant->nod_arg[0]; ++ request->append_number(gds_dyn_trg_type, (SSHORT)(SLONG) (IPTR) constant->nod_arg[0]); ++ trig_type = (USHORT)(ULONG) (IPTR) constant->nod_arg[0]; + } + else { + assert(node->nod_type == nod_mod_trigger); +@@ -2893,7 +2893,7 @@ + for (DSQL_NOD* ptr = temp->nod_arg; ptr < end; ++ptr) + { + DSQL_NOD message = *ptr; +- SSHORT number = (SSHORT)(SLONG) message->nod_arg[e_msg_number]; ++ SSHORT number = (SSHORT)(SLONG) (IPTR) message->nod_arg[e_msg_number]; + if (message->nod_type == nod_del_trigger_msg) + { + request->append_number(gds_dyn_delete_trigger_msg, number); +@@ -2954,7 +2954,7 @@ + // CVC: This is case of "returns [by value|reference]" + /* Some data types can not be returned as value */ + +- if (((int)(SLONG) (ret_val_ptr[1]->nod_arg[0]) == FUN_value) && ++ if (((int)(SLONG) (IPTR) (ret_val_ptr[1]->nod_arg[0]) == FUN_value) && + (field->fld_dtype == dtype_text || + field->fld_dtype == dtype_varying || + field->fld_dtype == dtype_cstring || +@@ -2998,7 +2998,7 @@ + // CVC: This is case of "returns parameter " + + +- position = (SSHORT)(SLONG) (ret_val_ptr[1]->nod_arg[0]); ++ position = (SSHORT)(SLONG) (IPTR) (ret_val_ptr[1]->nod_arg[0]); + /* Function modifies an argument whose value is the function return value */ + + if (!arguments || position > arguments->nod_count || position < 1) { +@@ -3024,7 +3024,7 @@ + if (field->fld_dtype == dtype_blob) + { + /* CVC: I need to test returning blobs by descriptor before allowing the change there. For now, I ignore the return type specification. */ +- BOOLEAN free_it = ((SSHORT)(SLONG) ret_val_ptr[1]->nod_arg[0] < 0); ++ BOOLEAN free_it = ((SSHORT)(SLONG) (IPTR) ret_val_ptr[1]->nod_arg[0] < 0); + request->append_number(gds_dyn_def_function_arg, blob_position); + request->append_number(gds_dyn_func_mechanism, + (SSHORT)(SLONG) ((free_it ? -1 : 1) * FUN_blob_struct)); +@@ -3035,7 +3035,7 @@ + { + request->append_number(gds_dyn_def_function_arg, (SSHORT) 0); + request->append_number(gds_dyn_func_mechanism, +- (SSHORT)(SLONG) (ret_val_ptr[1]->nod_arg[0])); ++ (SSHORT)(SLONG) (IPTR) (ret_val_ptr[1]->nod_arg[0])); + } + + request->append_cstring(gds_dyn_function_name, udf_name); +@@ -3070,7 +3070,7 @@ + request->append_number(gds_dyn_def_function_arg, (SSHORT) position); + + if (param_node [e_udf_param_type]) { +- SSHORT arg_mechanism = (SSHORT)(SLONG) (param_node [e_udf_param_type]->nod_arg [0]); ++ SSHORT arg_mechanism = (SSHORT)(SLONG) (IPTR) (param_node [e_udf_param_type]->nod_arg [0]); + request->append_number(gds_dyn_func_mechanism, arg_mechanism); + } + else if (field->fld_dtype == dtype_blob) { +@@ -3677,13 +3677,13 @@ + if (constant) + { + request->append_number(gds_dyn_trg_sequence, +- (SSHORT)(SLONG) (constant ? constant->nod_arg[0] : 0)); ++ (SSHORT)(SLONG) (IPTR) (constant ? constant->nod_arg[0] : 0)); + } + + constant = node->nod_arg[e_cnstr_type]; + if (constant) + { +- trig_type = (USHORT)(ULONG) constant->nod_arg[0]; ++ trig_type = (USHORT)(ULONG)(IPTR) constant->nod_arg[0]; + request->append_number(gds_dyn_trg_type, trig_type); + } + else +@@ -4173,7 +4173,7 @@ + + case nod_del_shadow: + request->append_number(gds_dyn_delete_shadow, +- (SSHORT)(SLONG) (node->nod_arg[0])); ++ (SSHORT)(SLONG) (IPTR) (node->nod_arg[0])); + request->append_uchar(gds_dyn_end); + break; + +@@ -4611,25 +4611,25 @@ + + case nod_group_commit_wait: + request->append_uchar(gds_dyn_log_group_commit_wait); +- temp_long = (SLONG) (element->nod_arg[0]); ++ temp_long = (SLONG)(IPTR) (element->nod_arg[0]); + request->append_ulong_with_length(temp_long); + break; + + case nod_check_point_len: + request->append_uchar(gds_dyn_log_check_point_length); +- temp_long = (SLONG) (element->nod_arg[0]); ++ temp_long = (SLONG)(IPTR) (element->nod_arg[0]); + request->append_ulong_with_length(temp_long); + break; + + case nod_num_log_buffers: + request->append_uchar(gds_dyn_log_num_of_buffers); +- temp_short = (SSHORT)(SLONG) (element->nod_arg[0]); ++ temp_short = (SSHORT)(SLONG)(IPTR) (element->nod_arg[0]); + request->append_ushort_with_length(temp_short); + break; + + case nod_log_buffer_size: + request->append_uchar(gds_dyn_log_buffer_size); +- temp_short = (SSHORT)(SLONG) (element->nod_arg[0]); ++ temp_short = (SSHORT)(SLONG)(IPTR) (element->nod_arg[0]); + request->append_ushort_with_length(temp_short); + break; + case nod_drop_log: +@@ -5095,7 +5095,7 @@ + const_node = element->nod_arg[e_mod_fld_pos_new_position]; + + /* CVC: Since now the parser accepts pos=1..N, let's subtract one here. */ +- constant = (SSHORT)(SLONG) const_node->nod_arg [0] - 1; ++ constant = (SSHORT)(SLONG) (IPTR) const_node->nod_arg [0] - 1; + + request->append_cstring(gds_dyn_rel_name, + relation_name->str_data); +diff -Naur firebird-1.5.3.4870.old/src/dsql/dsql.cpp firebird-1.5.3.4870/src/dsql/dsql.cpp +--- firebird-1.5.3.4870.old/src/dsql/dsql.cpp 2006-08-06 06:47:20.000000000 +0200 ++++ firebird-1.5.3.4870/src/dsql/dsql.cpp 2006-08-06 07:38:45.000000000 +0200 +@@ -1136,8 +1136,8 @@ + parameter = request->req_blob->blb_segment; + PAR null = parameter->par_null; + USHORT* ret_length = +- (USHORT *) (dsql_msg + (SLONG) null->par_user_desc.dsc_address); +- UCHAR* buffer = dsql_msg + (SLONG) parameter->par_user_desc.dsc_address; ++ (USHORT *) (dsql_msg + (SLONG) (IPTR) null->par_user_desc.dsc_address); ++ UCHAR* buffer = dsql_msg + (SLONG) (IPTR) parameter->par_user_desc.dsc_address; + THREAD_EXIT; + s = isc_get_segment(tdsql->tsql_status, + GDS_REF(request->req_handle), +@@ -1314,7 +1314,7 @@ + parameter = request->req_blob->blb_segment; + buffer = + reinterpret_cast( +- dsql_msg + (SLONG) parameter->par_user_desc.dsc_address); ++ dsql_msg + (SLONG) (IPTR) parameter->par_user_desc.dsc_address); + THREAD_EXIT; + s = isc_put_segment(tdsql->tsql_status, + GDS_REF(request->req_handle), +@@ -3210,7 +3210,7 @@ + PAR parameter, null; + + if (node->nod_type == nod_constant) +- return (SSHORT)(SLONG) node->nod_arg[0]; ++ return (SSHORT)(SLONG) (IPTR) node->nod_arg[0]; + + parameter = (PAR) node->nod_arg[e_par_parameter]; + if (null = parameter->par_null) +@@ -3976,7 +3976,7 @@ + /* Make sure the message given to us is long enough */ + + DSC desc = parameter->par_user_desc; +- USHORT length = (SLONG) desc.dsc_address + desc.dsc_length; ++ USHORT length = (SLONG) (IPTR) desc.dsc_address + desc.dsc_length; + if (length > msg_length) + break; + if (!desc.dsc_dtype) +@@ -3985,7 +3985,7 @@ + flag = NULL; + if ((null = parameter->par_null) != NULL) + { +- USHORT null_offset = (USHORT)(ULONG) (null->par_user_desc.dsc_address); ++ USHORT null_offset = (USHORT)(ULONG) (IPTR) (null->par_user_desc.dsc_address); + length = null_offset + sizeof(SSHORT); + if (length > msg_length) + break; +@@ -4000,7 +4000,7 @@ + } + } + +- desc.dsc_address = dsql_msg + (SLONG) desc.dsc_address; ++ desc.dsc_address = dsql_msg + (SLONG) (IPTR) desc.dsc_address; + if (!request) + MOVD_move(¶meter->par_desc, &desc); + else if (!flag || *flag >= 0) +diff -Naur firebird-1.5.3.4870.old/src/dsql/gen.cpp firebird-1.5.3.4870/src/dsql/gen.cpp +--- firebird-1.5.3.4870.old/src/dsql/gen.cpp 2006-08-06 06:47:20.000000000 +0200 ++++ firebird-1.5.3.4870/src/dsql/gen.cpp 2006-08-06 07:41:31.000000000 +0200 +@@ -636,7 +636,7 @@ + for (parameter = message->msg_parameters; parameter; + parameter = parameter->par_next) + parameter->par_desc.dsc_address = +- message->msg_buffer + (SLONG) parameter->par_desc.dsc_address; ++ message->msg_buffer + (SLONG) (IPTR) parameter->par_desc.dsc_address; + } + + +@@ -1021,7 +1021,7 @@ + case nod_exec_into: + if (node->nod_arg[e_exec_into_block]) { + STUFF(blr_label); +- STUFF((int)(SLONG) node->nod_arg[e_exec_into_number]); ++ STUFF((int)(SLONG) (IPTR) node->nod_arg[e_exec_into_number]); + } + STUFF(blr_exec_into); + temp = node->nod_arg[e_exec_into_list]; +@@ -1049,12 +1049,12 @@ + + case nod_label: + STUFF(blr_label); +- STUFF((int)(SLONG) node->nod_arg[e_label_number]); ++ STUFF((int)(SLONG) (IPTR) node->nod_arg[e_label_number]); + return; + + case nod_breakleave: + STUFF(blr_leave); +- STUFF((int)(SLONG) node->nod_arg[e_breakleave_number]); ++ STUFF((int)(SLONG)(IPTR) node->nod_arg[e_breakleave_number]); + return; + + case nod_store: +@@ -1069,7 +1069,7 @@ + + case nod_abort: + STUFF(blr_leave); +- STUFF((int)(SLONG) node->nod_arg[e_abrt_number]); ++ STUFF((int)(SLONG) (IPTR) node->nod_arg[e_abrt_number]); + return; + + case nod_start_savepoint: +@@ -1149,14 +1149,14 @@ + + case nod_while: + STUFF(blr_label); +- STUFF((int)(SLONG) node->nod_arg[e_while_number]); ++ STUFF((int)(SLONG) (IPTR) node->nod_arg[e_while_number]); + STUFF(blr_loop); + STUFF(blr_begin); + STUFF(blr_if); + GEN_expr(request, node->nod_arg[e_while_cond]); + GEN_statement(request, node->nod_arg[e_while_action]); + STUFF(blr_leave); +- STUFF((int)(SLONG) node->nod_arg[e_while_number]); ++ STUFF((int)(SLONG) (IPTR) node->nod_arg[e_while_number]); + STUFF(blr_end); + return; + +@@ -1556,7 +1556,7 @@ + switch (node->nod_type) { + case nod_sqlcode: + STUFF(blr_sql_code); +- STUFF_WORD((USHORT)(ULONG) node->nod_arg[0]); ++ STUFF_WORD((USHORT)(ULONG) (IPTR) node->nod_arg[0]); + return; + + case nod_gdscode: +@@ -1667,7 +1667,7 @@ + what loop is the user trying to abandon? */ + if (for_select->nod_arg [e_flp_action]) { + STUFF (blr_label); +- STUFF ((int) for_select->nod_arg [e_flp_number]); ++ STUFF ((int) (IPTR) for_select->nod_arg [e_flp_number]); + } + + /* Generate FOR loop */ +@@ -2546,7 +2546,7 @@ + for (ptr = list->nod_arg, end = ptr + list->nod_count; ptr < end; ptr++) { + dsql_nod* nulls_placement = (*ptr)->nod_arg[e_order_nulls]; + if (nulls_placement) { +- switch ((SLONG)nulls_placement->nod_arg[0]) { ++ switch ((SLONG) (IPTR) nulls_placement->nod_arg[0]) { + case NOD_NULLS_FIRST: + STUFF(blr_nullsfirst); + break; +diff -Naur firebird-1.5.3.4870.old/src/dsql/parse.y firebird-1.5.3.4870/src/dsql/parse.y +--- firebird-1.5.3.4870.old/src/dsql/parse.y 2006-08-06 06:47:21.000000000 +0200 ++++ firebird-1.5.3.4870/src/dsql/parse.y 2006-08-06 07:49:47.000000000 +0200 +@@ -551,7 +551,7 @@ + | set + | update + | KW_DEBUG signed_short_integer +- { prepare_console_debug ((int) $2, &yydebug); ++ { prepare_console_debug ((int)(IPTR) $2, &yydebug); + $$ = make_node (nod_null, (int) 0, NULL); } + ; + +@@ -753,7 +753,7 @@ + | CSTRING '(' pos_short_integer ')' charset_clause + { + lex.g_field->fld_dtype = dtype_cstring; +- lex.g_field->fld_character_length = (USHORT) $3; } ++ lex.g_field->fld_character_length = (USHORT)(size_t) $3; } + ; + + arg_desc_list1 : +@@ -1158,7 +1158,7 @@ + ; + + logfile_attr : KW_SIZE equals long_integer +- { lex.g_file->fil_length = (SLONG) $3; } ++ { lex.g_file->fil_length = (SLONG)(IPTR) $3; } + /* + | RAW_PARTITIONS equals pos_short_integer + { lex.g_file->fil_partitions = (SSHORT) $3; +@@ -1178,9 +1178,9 @@ + ; + + file_clause : STARTING file_clause_noise long_integer +- { lex.g_file->fil_start = (SLONG) $3;} ++ { lex.g_file->fil_start = (SLONG)(IPTR) $3;} + | LENGTH equals long_integer page_noise +- { lex.g_file->fil_length = (SLONG) $3;} ++ { lex.g_file->fil_length = (SLONG)(IPTR) $3;} + ; + + file_clause_noise : +@@ -2186,7 +2186,7 @@ + ; + + array_range : signed_long_integer +- { if ((SLONG) $1 < 1) ++ { if ((SLONG)(IPTR) $1 < 1) + $$ = make_node (nod_list, (int) 2, + MAKE_constant ((STR) $1, CONSTANT_SLONG), + MAKE_constant ((STR) 1, CONSTANT_SLONG)); +@@ -2292,26 +2292,26 @@ + | BLOB '(' unsigned_short_integer ')' + { + lex.g_field->fld_dtype = dtype_blob; +- lex.g_field->fld_seg_length = (USHORT) $3; ++ lex.g_field->fld_seg_length = (USHORT)(size_t) $3; + lex.g_field->fld_sub_type = 0; + } + | BLOB '(' unsigned_short_integer ',' signed_short_integer ')' + { + lex.g_field->fld_dtype = dtype_blob; +- lex.g_field->fld_seg_length = (USHORT) $3; +- lex.g_field->fld_sub_type = (USHORT) $5; ++ lex.g_field->fld_seg_length = (USHORT)(size_t) $3; ++ lex.g_field->fld_sub_type = (USHORT)(size_t) $5; + } + | BLOB '(' ',' signed_short_integer ')' + { + lex.g_field->fld_dtype = dtype_blob; + lex.g_field->fld_seg_length = 80; +- lex.g_field->fld_sub_type = (USHORT) $4; ++ lex.g_field->fld_sub_type = (USHORT)(size_t) $4; + } + ; + + blob_segsize : SEGMENT KW_SIZE unsigned_short_integer + { +- lex.g_field->fld_seg_length = (USHORT) $3; ++ lex.g_field->fld_seg_length = (USHORT)(size_t) $3; + } + | + { +@@ -2321,7 +2321,7 @@ + + blob_subtype : SUB_TYPE signed_short_integer + { +- lex.g_field->fld_sub_type = (USHORT) $2; ++ lex.g_field->fld_sub_type = (USHORT)(size_t) $2; + } + | SUB_TYPE symbol_blob_subtype_name + { +@@ -2347,7 +2347,7 @@ + national_character_type : national_character_keyword '(' pos_short_integer ')' + { + lex.g_field->fld_dtype = dtype_text; +- lex.g_field->fld_character_length = (USHORT) $3; ++ lex.g_field->fld_character_length = (USHORT)(size_t) $3; + lex.g_field->fld_flags |= FLD_national; + } + | national_character_keyword +@@ -2359,7 +2359,7 @@ + | national_character_keyword VARYING '(' pos_short_integer ')' + { + lex.g_field->fld_dtype = dtype_varying; +- lex.g_field->fld_character_length = (USHORT) $4; ++ lex.g_field->fld_character_length = (USHORT)(size_t) $4; + lex.g_field->fld_flags |= FLD_national; + } + ; +@@ -2367,7 +2367,7 @@ + character_type : character_keyword '(' pos_short_integer ')' + { + lex.g_field->fld_dtype = dtype_text; +- lex.g_field->fld_character_length = (USHORT) $3; ++ lex.g_field->fld_character_length = (USHORT)(size_t) $3; + } + | character_keyword + { +@@ -2377,7 +2377,7 @@ + | varying_keyword '(' pos_short_integer ')' + { + lex.g_field->fld_dtype = dtype_varying; +- lex.g_field->fld_character_length = (USHORT) $3; ++ lex.g_field->fld_character_length = (USHORT)(size_t) $3; + } + ; + +@@ -2429,10 +2429,10 @@ + } + | '(' signed_long_integer ')' + { +- if ( ((SLONG) $2 < 1) || ((SLONG) $2 > 18) ) ++ if ( ((SLONG)(IPTR) $2 < 1) || ((SLONG)(IPTR) $2 > 18) ) + yyabandon (-842, isc_precision_err); + /* Precision most be between 1 and 18. */ +- if ((SLONG) $2 > 9) ++ if ((SLONG)(IPTR) $2 > 9) + { + if ( ( (client_dialect <= SQL_DIALECT_V5) && + (db_dialect > SQL_DIALECT_V5) ) || +@@ -2469,7 +2469,7 @@ + } + } + else +- if ((SLONG) $2 < 5) ++ if ((SLONG)(IPTR) $2 < 5) + { + lex.g_field->fld_dtype = dtype_short; + lex.g_field->fld_length = sizeof (SSHORT); +@@ -2479,17 +2479,17 @@ + lex.g_field->fld_dtype = dtype_long; + lex.g_field->fld_length = sizeof (SLONG); + } +- lex.g_field->fld_precision = (USHORT) $2; ++ lex.g_field->fld_precision = (USHORT)(size_t) $2; + } + | '(' signed_long_integer ',' signed_long_integer ')' + { +- if ( ((SLONG) $2 < 1) || ((SLONG) $2 > 18) ) ++ if ( ((SLONG)(IPTR) $2 < 1) || ((SLONG)(IPTR) $2 > 18) ) + yyabandon (-842, isc_precision_err); + /* Precision should be between 1 and 18 */ +- if (((SLONG) $4 > (SLONG) $2) || ((SLONG) $4 < 0)) ++ if (((SLONG)(IPTR) $4 > (SLONG)(IPTR) $2) || ((SLONG)(IPTR) $4 < 0)) + yyabandon (-842, isc_scale_nogt); + /* Scale must be between 0 and precision */ +- if ((SLONG) $2 > 9) ++ if ((SLONG)(IPTR) $2 > 9) + { + if ( ( (client_dialect <= SQL_DIALECT_V5) && + (db_dialect > SQL_DIALECT_V5) ) || +@@ -2527,7 +2527,7 @@ + } + else + { +- if ((SLONG) $2 < 5) ++ if ((SLONG)(IPTR) $2 < 5) + { + lex.g_field->fld_dtype = dtype_short; + lex.g_field->fld_length = sizeof (SSHORT); +@@ -2538,8 +2538,8 @@ + lex.g_field->fld_length = sizeof (SLONG); + } + } +- lex.g_field->fld_precision = (USHORT) $2; +- lex.g_field->fld_scale = - (SSHORT) $4; ++ lex.g_field->fld_precision = (USHORT)(size_t) $2; ++ lex.g_field->fld_scale = - (SSHORT)(size_t) $4; + } + ; + +@@ -2553,7 +2553,7 @@ + + float_type : KW_FLOAT precision_opt + { +- if ((SLONG) $2 > 7) ++ if ((SLONG)(IPTR) $2 > 7) + { + lex.g_field->fld_dtype = dtype_double; + lex.g_field->fld_length = sizeof (double); +@@ -2756,7 +2756,7 @@ + ; + + table_lock : FOR lock_type lock_mode +- { $$ = make_flag_node (nod_lock_mode, (SSHORT) ((SSHORT) $2 | (SSHORT) $3), (SSHORT) 0, NULL); } ++ { $$ = make_flag_node (nod_lock_mode, (SSHORT) ((SSHORT)(size_t) $2 | (SSHORT)(size_t) $3), (SSHORT) 0, NULL); } + | + { $$ = 0; } + ; +@@ -3706,32 +3706,32 @@ + + signed_short_integer : nonneg_short_integer + | '-' neg_short_integer +- { $$ = (DSQL_NOD) - (SLONG) $2; } ++ { $$ = (DSQL_NOD) - (SLONG)(IPTR) $2; } + ; + + nonneg_short_integer : NUMBER +- { if ((SLONG) $1 > SHRT_POS_MAX) ++ { if ((SLONG)(IPTR) $1 > SHRT_POS_MAX) + yyabandon (-842, isc_expec_short); + /* Short integer expected */ + $$ = $1;} + ; + + neg_short_integer : NUMBER +- { if ((SLONG) $1 > SHRT_NEG_MAX) ++ { if ((SLONG)(IPTR) $1 > SHRT_NEG_MAX) + yyabandon (-842, isc_expec_short); + /* Short integer expected */ + $$ = $1;} + ; + + pos_short_integer : nonneg_short_integer +- { if ((SLONG) $1 == 0) ++ { if ((SLONG)(IPTR) $1 == 0) + yyabandon (-842, isc_expec_positive); + /* Positive number expected */ + $$ = $1;} + ; + + unsigned_short_integer : NUMBER +- { if ((SLONG) $1 > SHRT_UNSIGNED_MAX) ++ { if ((SLONG)(IPTR) $1 > SHRT_UNSIGNED_MAX) + yyabandon (-842, isc_expec_ushort); + /* Unsigned short integer expected */ + $$ = $1;} +@@ -3739,7 +3739,7 @@ + + signed_long_integer : long_integer + | '-' long_integer +- { $$ = (DSQL_NOD) - (SLONG) $2; } ++ { $$ = (DSQL_NOD) - (SLONG)(IPTR) $2; } + ; + + long_integer : NUMBER +@@ -3820,14 +3820,14 @@ + + string_value_function : SUBSTRING '(' value FROM pos_short_integer ')' + { $$ = make_node (nod_substr, e_substr_count, $3, +- MAKE_constant ((STR) ((SLONG)($5) - 1), CONSTANT_SLONG), ++ MAKE_constant ((STR) ((SLONG)(IPTR)($5) - 1), CONSTANT_SLONG), + MAKE_constant ((STR) SHRT_POS_MAX, CONSTANT_SLONG)); } + /* CVC: It was easier to provide a constant with maximum value if the + third parameter -length- is ommitted than to chase and fix the functions + that treat nod_substr as an aggregate and do not expect NULL arguments. */ + | SUBSTRING '(' value FROM pos_short_integer FOR nonneg_short_integer ')' + { $$ = make_node (nod_substr, e_substr_count, $3, +- MAKE_constant ((STR) ((SLONG)($5) - 1), CONSTANT_SLONG), ++ MAKE_constant ((STR) ((SLONG)(IPTR)($5) - 1), CONSTANT_SLONG), + MAKE_constant ((STR) ($7), CONSTANT_SLONG)); } + | KW_UPPER '(' value ')' + { $$ = make_node (nod_upcase, 1, $3); } +@@ -4960,7 +4960,7 @@ + + CHECK_BOUND(p); + *p = 0; +- sym = HSHD_lookup (NULL_PTR, (TEXT *) string, (SSHORT)(p - string), SYM_keyword, parser_version); ++ sym = HSHD_lookup (NULL_PTR, (TEXT *) string, (SSHORT)(size_t)(p - string), SYM_keyword, parser_version); + if (sym) + { + /* 13 June 2003. Nickolay Samofatov +diff -Naur firebird-1.5.3.4870.old/src/dsql/pass1.cpp firebird-1.5.3.4870/src/dsql/pass1.cpp +--- firebird-1.5.3.4870.old/src/dsql/pass1.cpp 2006-08-06 06:47:20.000000000 +0200 ++++ firebird-1.5.3.4870/src/dsql/pass1.cpp 2006-08-06 07:52:09.000000000 +0200 +@@ -642,7 +642,7 @@ + TRUE, TRUE, + /* Pass 0 here to restore older parameter + ordering behavior */ +- (USHORT)(ULONG) input->nod_arg[0]); ++ (USHORT)(ULONG)(IPTR) input->nod_arg[0]); + return node; + + case nod_udf: +@@ -1561,7 +1561,7 @@ + } + else { + // we have Count(*) +- if (request->req_scope_level == (ULONG) node->nod_arg[1]) { ++ if (request->req_scope_level == (ULONG)(IPTR) node->nod_arg[1]) { + aggregate = TRUE; + } + } +@@ -4426,7 +4426,7 @@ + (slist_node->nod_type == nod_list)) + { + /* an select list is there */ +- position = (ULONG) sub->nod_arg[0]; ++ position = (ULONG)(IPTR) sub->nod_arg[0]; + if ((position < 1) || (position > (ULONG) slist_node->nod_count)) + { + ERRD_post(gds_sqlerr, gds_arg_number, (SLONG) - 104, +@@ -4819,7 +4819,7 @@ + } + + if (node1->nod_type == nod_constant && node1->nod_desc.dsc_dtype == dtype_long) { +- position = (ULONG) (node1->nod_arg[0]); ++ position = (ULONG)(IPTR) (node1->nod_arg[0]); + if ((position < 1) || !s_list || + (position > (ULONG) s_list->nod_count)) { + ERRD_post(gds_sqlerr, gds_arg_number, (SLONG) - 104, +@@ -5082,7 +5082,7 @@ + ERRD_post(gds_sqlerr, gds_arg_number, (SLONG) - 104, + gds_arg_gds, gds_dsql_command_err, gds_arg_gds, gds_order_by_err, /* invalid ORDER BY clause */ + 0); +- number = (SLONG) position->nod_arg[0]; ++ number = (SLONG)(IPTR) position->nod_arg[0]; + if (number < 1 || number > union_items->nod_count) + ERRD_post(gds_sqlerr, gds_arg_number, (SLONG) - 104, + gds_arg_gds, gds_dsql_command_err, gds_arg_gds, gds_order_by_err, /* invalid ORDER BY clause */ +diff -Naur firebird-1.5.3.4870.old/src/dudley/generate.cpp firebird-1.5.3.4870/src/dudley/generate.cpp +--- firebird-1.5.3.4870.old/src/dudley/generate.cpp 2006-08-06 06:47:26.000000000 +0200 ++++ firebird-1.5.3.4870/src/dudley/generate.cpp 2006-08-06 08:06:49.000000000 +0200 +@@ -426,7 +426,7 @@ + case nod_abort: + CHECK_BLR(2); + STUFF(blr_leave); +- STUFF((int) node->nod_arg[0]); ++ STUFF((int) (IPTR) node->nod_arg[0]); + return; + + case nod_erase: +diff -Naur firebird-1.5.3.4870.old/src/dudley/trn.cpp firebird-1.5.3.4870/src/dudley/trn.cpp +--- firebird-1.5.3.4870.old/src/dudley/trn.cpp 2006-08-06 06:47:26.000000000 +0200 ++++ firebird-1.5.3.4870/src/dudley/trn.cpp 2006-08-06 08:07:12.000000000 +0200 +@@ -244,7 +244,7 @@ + break; + + case act_d_shadow: +- drop_shadow(dyn, (SLONG) (action->act_object)); ++ drop_shadow(dyn, (SLONG)(IPTR) (action->act_object)); + break; + + case act_m_trigger_msg: +diff -Naur firebird-1.5.3.4870.old/src/jrd/jrd.cpp firebird-1.5.3.4870/src/jrd/jrd.cpp +--- firebird-1.5.3.4870.old/src/jrd/jrd.cpp 2006-08-06 06:52:32.000000000 +0200 ++++ firebird-1.5.3.4870/src/jrd/jrd.cpp 2006-08-06 06:53:15.000000000 +0200 +@@ -3877,9 +3877,9 @@ + { + if ( (node = csb->csb_rpt[i].csb_message) ) + { +- if ((int) node->nod_arg[e_msg_number] == 0) { ++ if ((int) (IPTR) node->nod_arg[e_msg_number] == 0) { + in_message = node; +- } else if ((int) node->nod_arg[e_msg_number] == 1) { ++ } else if ((int) (IPTR) node->nod_arg[e_msg_number] == 1) { + out_message = node; + } + } +diff -Naur firebird-1.5.3.4870.old/src/jrd/jrn.cpp firebird-1.5.3.4870/src/jrd/jrn.cpp +--- firebird-1.5.3.4870.old/src/jrd/jrn.cpp 2006-08-06 06:47:17.000000000 +0200 ++++ firebird-1.5.3.4870/src/jrd/jrn.cpp 2006-08-06 06:55:26.000000000 +0200 +@@ -836,7 +836,7 @@ + for (loop = 0; loop < 20; loop++) { + for (;;) { + journal->jrn_channel = (int *) socket(AF_INET, SOCK_STREAM, 0); +- if ((int) journal->jrn_channel != -1) ++ if ((int) (IPTR) journal->jrn_channel != -1) + break; + if (!SYSCALL_INTERRUPTED(errno)) { + error(status_vector, journal, errno, "socket"); +@@ -859,18 +859,18 @@ + return ret_val; + } + +- if (!connect((int) journal->jrn_channel, (sockaddr*)&address, sizeof(address))) ++ if (!connect((int) (IPTR) journal->jrn_channel, (sockaddr*)&address, sizeof(address))) + break; + + sleep(3); + + if (loop < 16) { +- close((int) journal->jrn_channel); ++ close((int) (IPTR) journal->jrn_channel); + continue; + } + if (!SYSCALL_INTERRUPTED(errno)) { + if (retry) { +- close((int) journal->jrn_channel); ++ close((int) (IPTR) journal->jrn_channel); + gds__free(journal); + *ret_jrn = (JRN) NULL; + return FB_SUCCESS; +@@ -879,7 +879,7 @@ + gds__free(journal); + return FB_FAILURE; + } +- close((int) journal->jrn_channel); ++ close((int) (IPTR) journal->jrn_channel); + } + #endif + +@@ -939,7 +939,7 @@ + if (retry) + { + #ifdef BSD_SOCKETS +- close((int) journal->jrn_channel); ++ close((int) (IPTR) journal->jrn_channel); + #endif + + #ifdef WIN_NT +@@ -1056,7 +1056,7 @@ + with us, so keep trying until successful. */ + + do { +- l = recv((int) journal->jrn_channel, (char *) reply, sizeof(struct jrnr), 0); ++ l = recv((int) (IPTR) journal->jrn_channel, (char *) reply, sizeof(struct jrnr), 0); + } while (l < 0 && SYSCALL_INTERRUPTED(errno)); + + if (l < 0) { +@@ -1095,7 +1095,7 @@ + **************************************/ + + #ifdef BSD_SOCKETS +- if (close((int) journal->jrn_channel) < 0) { ++ if (close((int) (IPTR) journal->jrn_channel) < 0) { + error(status_vector, journal, errno, "close"); + return FB_FAILURE; + } +@@ -1166,7 +1166,7 @@ + with us, so keep trying until successful. */ + + do { +- l = send((int) journal->jrn_channel, (char *) buffer, (int) length, 0); ++ l = send((int) (IPTR) journal->jrn_channel, (char *) buffer, (int) length, 0); + } while (l < 0 && SYSCALL_INTERRUPTED(errno)); + + if (l < 0) { +diff -Naur firebird-1.5.3.4870.old/src/jrd/lck.cpp firebird-1.5.3.4870/src/jrd/lck.cpp +--- firebird-1.5.3.4870.old/src/jrd/lck.cpp 2006-08-06 06:47:17.000000000 +0200 ++++ firebird-1.5.3.4870/src/jrd/lck.cpp 2006-08-06 07:56:17.000000000 +0200 +@@ -87,8 +87,8 @@ + #ifdef SUPERSERVER + + #define LCK_OWNER_ID_PROCESS (SLONG) getpid() +-#define LCK_OWNER_ID_DBB (SLONG) dbb +-#define LCK_OWNER_ID_ATT (SLONG) attachment ++#define LCK_OWNER_ID_DBB (SLONG)(IPTR) dbb ++#define LCK_OWNER_ID_ATT (SLONG)(IPTR) attachment + + #define LCK_OWNER_TYPE_PROCESS LCK_OWNER_process + #define LCK_OWNER_TYPE_DBB LCK_OWNER_dbb +diff -Naur firebird-1.5.3.4870.old/src/jrd/nav.cpp firebird-1.5.3.4870/src/jrd/nav.cpp +--- firebird-1.5.3.4870.old/src/jrd/nav.cpp 2006-08-06 06:47:18.000000000 +0200 ++++ firebird-1.5.3.4870/src/jrd/nav.cpp 2006-08-06 07:00:00.000000000 +0200 +@@ -487,7 +487,7 @@ + + init_fetch(impure); + idx = +- (IDX *) ((SCHAR *) impure + (SLONG) rsb->rsb_arg[RSB_NAV_idx_offset]); ++ (IDX *) ((SCHAR *) impure + (SLONG) (IPTR) rsb->rsb_arg[RSB_NAV_idx_offset]); + + /* The bitmap is only valid when we are continuing on in one + direction. It is of no help when we change direction, +@@ -521,12 +521,12 @@ + #ifdef SCROLLABLE_CURSORS + MOVE_FAST( + (impure->irsb_nav_data + +- (2 * (SLONG) rsb->rsb_arg[RSB_NAV_key_length])), ++ (2 * (SLONG) (IPTR) rsb->rsb_arg[RSB_NAV_key_length])), + upper.key_data, upper.key_length); + #else + MOVE_FAST( + (impure->irsb_nav_data + +- (SLONG) rsb->rsb_arg[RSB_NAV_key_length]), upper.key_data, ++ (SLONG) (IPTR) rsb->rsb_arg[RSB_NAV_key_length]), upper.key_data, + upper.key_length); + #endif + } +@@ -534,7 +534,7 @@ + lower.key_length = impure->irsb_nav_lower_length; + MOVE_FAST( + (impure->irsb_nav_data + +- (SLONG) rsb->rsb_arg[RSB_NAV_key_length]), lower.key_data, ++ (SLONG) (IPTR) rsb->rsb_arg[RSB_NAV_key_length]), lower.key_data, + lower.key_length); + } + +@@ -1404,7 +1404,7 @@ + tdbb = GET_THREAD_DATA; + + idx = +- (IDX *) ((SCHAR *) impure + (SLONG) rsb->rsb_arg[RSB_NAV_idx_offset]); ++ (IDX *) ((SCHAR *) impure + (SLONG) (IPTR) rsb->rsb_arg[RSB_NAV_idx_offset]); + page = (BTR) CCH_FETCH(tdbb, window, LCK_read, pag_index); + + /* the outer loop goes through all the sibling pages +@@ -1619,7 +1619,7 @@ + tdbb = GET_THREAD_DATA; + request = tdbb->tdbb_request; + idx = +- (IDX *) ((SCHAR *) impure + (SLONG) rsb->rsb_arg[RSB_NAV_idx_offset]); ++ (IDX *) ((SCHAR *) impure + (SLONG) (IPTR) rsb->rsb_arg[RSB_NAV_idx_offset]); + + BOOLEAN result; + +@@ -1656,7 +1656,7 @@ + rpb->rpb_record, + reinterpret_cast < + struct idx *>((SCHAR *) impure + +- (SLONG) rsb->rsb_arg[RSB_NAV_idx_offset]), ++ (SLONG) (IPTR) rsb->rsb_arg[RSB_NAV_idx_offset]), + &value, + 0); + if (compare_keys(idx, key->key_data, key->key_length, &value, FALSE)) { +@@ -1757,7 +1757,7 @@ + retrieval_node = (JRD_NOD) rsb->rsb_arg[RSB_NAV_index]; + retrieval = (IRB) retrieval_node->nod_arg[e_idx_retrieval]; + idx = +- (IDX *) ((SCHAR *) impure + (SLONG) rsb->rsb_arg[RSB_NAV_idx_offset]); ++ (IDX *) ((SCHAR *) impure + (SLONG) (IPTR) rsb->rsb_arg[RSB_NAV_idx_offset]); + page = + BTR_find_page(tdbb, retrieval, window, idx, &lower, &upper, + (direction == RSE_get_backward)); +@@ -1802,7 +1802,7 @@ + impure->irsb_nav_upper_length = upper.key_length; + MOVE_FAST(upper.key_data, + (impure->irsb_nav_data + +- (SLONG) rsb->rsb_arg[RSB_NAV_key_length]), ++ (SLONG) (IPTR) rsb->rsb_arg[RSB_NAV_key_length]), + upper.key_length); + } + if (retrieval->irb_lower_count) +@@ -1813,7 +1813,7 @@ + impure->irsb_nav_lower_length = lower.key_length; + MOVE_FAST(lower.key_data, + (impure->irsb_nav_data + +- (SLONG) rsb->rsb_arg[RSB_NAV_key_length]), ++ (SLONG) (IPTR) rsb->rsb_arg[RSB_NAV_key_length]), + lower.key_length); + } + if (retrieval->irb_upper_count) +diff -Naur firebird-1.5.3.4870.old/src/jrd/rse.cpp firebird-1.5.3.4870/src/jrd/rse.cpp +--- firebird-1.5.3.4870.old/src/jrd/rse.cpp 2006-08-06 06:47:17.000000000 +0200 ++++ firebird-1.5.3.4870/src/jrd/rse.cpp 2006-08-06 07:17:52.000000000 +0200 +@@ -2151,7 +2151,7 @@ + } + + desc = msg_format->fmt_desc[msg_format->fmt_count - 1]; +- desc.dsc_address = (UCHAR *) (om + (int) desc.dsc_address); ++ desc.dsc_address = (UCHAR *) (om + (int) (IPTR) desc.dsc_address); + eos_desc.dsc_dtype = dtype_short; + eos_desc.dsc_scale = 0; + eos_desc.dsc_length = sizeof(SSHORT); +@@ -2959,7 +2959,7 @@ + for (item = map->smb_rpt; item < end_item; item++) { + flag = *(data + item->smb_flag_offset); + from = item->smb_desc; +- from.dsc_address = data + (ULONG) from.dsc_address; ++ from.dsc_address = data + (ULONG) (IPTR) from.dsc_address; + if ((node = item->smb_node) && node->nod_type != nod_field) + continue; + +@@ -3211,7 +3211,7 @@ + end_item = map->smb_rpt + map->smb_count; + for (item = map->smb_rpt; item < end_item; item++) { + to = item->smb_desc; +- to.dsc_address = data + (ULONG) to.dsc_address; ++ to.dsc_address = data + (ULONG) (IPTR) to.dsc_address; + flag = FALSE; + if (item->smb_node) { + from = EVL_expr(tdbb, item->smb_node); +@@ -3301,12 +3301,12 @@ + desc2.dsc_flags = 0; + desc2.dsc_address = (UCHAR *) & indicator; + desc1 = *flag_desc; +- desc1.dsc_address = msg + (int) flag_desc->dsc_address; ++ desc1.dsc_address = msg + (int) (IPTR) flag_desc->dsc_address; + MOV_move(&desc1, &desc2); + if (indicator) { + SET_NULL(record, to_id); + l = to_desc->dsc_length; +- p = record->rec_data + (int) to_desc->dsc_address; ++ p = record->rec_data + (int) (IPTR) to_desc->dsc_address; + switch (to_desc->dsc_dtype) { + case dtype_text: + /* YYY - not necessarily the right thing to do */ +@@ -3336,9 +3336,9 @@ + else { + CLEAR_NULL(record, to_id); + desc1 = *from_desc; +- desc1.dsc_address = msg + (int) desc1.dsc_address; ++ desc1.dsc_address = msg + (int) (IPTR) desc1.dsc_address; + desc2 = *to_desc; +- desc2.dsc_address = record->rec_data + (int) desc2.dsc_address; ++ desc2.dsc_address = record->rec_data + (int) (IPTR) desc2.dsc_address; + if (!DSC_EQUIV((&desc1), (&desc2))) + MOV_move(&desc1, &desc2); + +@@ -3817,7 +3817,7 @@ + if (!sfb_->sfb_file_name) { + TEXT file_name[128]; + +- sfb_->sfb_file = (int) gds__temp_file(FALSE, SCRATCH, file_name); ++ sfb_->sfb_file = (int) (IPTR) gds__temp_file(FALSE, SCRATCH, file_name); + if (sfb_->sfb_file == -1) + SORT_error(tdbb->tdbb_status_vector, sfb_, "open", isc_io_error, + errno); +diff -Naur firebird-1.5.3.4870.old/src/jrd/sort.cpp firebird-1.5.3.4870/src/jrd/sort.cpp +--- firebird-1.5.3.4870.old/src/jrd/sort.cpp 2006-08-06 06:47:17.000000000 +0200 ++++ firebird-1.5.3.4870/src/jrd/sort.cpp 2006-08-06 07:19:27.000000000 +0200 +@@ -1788,7 +1788,7 @@ + /* Create a scratch file */ + + sfb->sfb_file = +- (int) gds__temp_file(FALSE, SCRATCH, file_name, ++ (int) (IPTR) gds__temp_file(FALSE, SCRATCH, file_name, + sfb->sfb_dls->dls_directory, TRUE); + + /* allocate the file name even if the file is not open, +diff -Naur firebird-1.5.3.4870.old/src/qli/eval.cpp firebird-1.5.3.4870/src/qli/eval.cpp +--- firebird-1.5.3.4870.old/src/qli/eval.cpp 2006-08-06 06:47:20.000000000 +0200 ++++ firebird-1.5.3.4870/src/qli/eval.cpp 2006-08-06 08:02:09.000000000 +0200 +@@ -200,10 +200,10 @@ + + if (node->nod_type == nod_rpt_average && node->nod_arg[e_stt_default]) + if (node->nod_desc.dsc_dtype == dtype_long) +- *(SLONG *) node->nod_desc.dsc_address /= (SLONG) node-> ++ *(SLONG *) node->nod_desc.dsc_address /= (SLONG) (IPTR) node-> + nod_arg[e_stt_default]; + else +- *(double *) node->nod_desc.dsc_address /= (SLONG) node-> ++ *(double *) node->nod_desc.dsc_address /= (SLONG) (IPTR) node-> + nod_arg[e_stt_default]; + } + +@@ -241,7 +241,7 @@ + + /* If this is the first value, just move it in. */ + +- count = (SLONG) node->nod_arg[e_stt_default] + 1; ++ count = (SLONG) (IPTR) node->nod_arg[e_stt_default] + 1; + if (count == 1) { + if (desc2->dsc_missing) + desc1->dsc_missing = DSC_missing; +@@ -374,7 +374,7 @@ + case nod_rpt_min: + case nod_rpt_total: + case nod_rpt_average: +- if (!(SLONG) node->nod_arg[e_stt_default]) ++ if (!(SLONG) (IPTR) node->nod_arg[e_stt_default]) + desc->dsc_missing = DSC_missing; + + case nod_rpt_count: +diff -Naur firebird-1.5.3.4870.old/src/qli/expand.cpp firebird-1.5.3.4870/src/qli/expand.cpp +--- firebird-1.5.3.4870.old/src/qli/expand.cpp 2006-08-06 06:47:20.000000000 +0200 ++++ firebird-1.5.3.4870/src/qli/expand.cpp 2006-08-06 08:02:45.000000000 +0200 +@@ -1830,7 +1830,7 @@ + + } + +- item->itm_count = (int) syn_item->syn_arg[0]; ++ item->itm_count = (int)(IPTR) syn_item->syn_arg[0]; + return item; + } + +@@ -2131,7 +2131,7 @@ + /* Handle implicit boolean from SQL xxx IN (yyy FROM relation) */ + + if (input->syn_arg[s_rse_outer]) { +- eql_node = MAKE_NODE((enum nod_t)(int)input->syn_arg[s_rse_op], 2); ++ eql_node = MAKE_NODE((enum nod_t)(int)(IPTR)input->syn_arg[s_rse_op], 2); + eql_node->nod_arg[0] = + expand_expression(input->syn_arg[s_rse_outer], old_stack); + eql_node->nod_arg[1] = +diff -Naur firebird-1.5.3.4870.old/src/qli/gener.cpp firebird-1.5.3.4870/src/qli/gener.cpp +--- firebird-1.5.3.4870.old/src/qli/gener.cpp 2006-08-06 06:47:19.000000000 +0200 ++++ firebird-1.5.3.4870/src/qli/gener.cpp 2006-08-06 08:03:12.000000000 +0200 +@@ -1556,7 +1556,7 @@ + + rlb = CHECK_RLB(request->req_blr); + +- if ((NOD_T) (int) node->nod_arg[e_rse_join_type] == (NOD_T) 0) ++ if ((NOD_T) (int) (IPTR) node->nod_arg[e_rse_join_type] == (NOD_T) 0) + STUFF(blr_rse); + else + STUFF(blr_rs_stream); +@@ -1625,7 +1625,7 @@ + if (list = node->nod_arg[e_rse_reduced]) + gen_sort(list, request, blr_project); + +- join_type = (NOD_T) (int) node->nod_arg[e_rse_join_type]; ++ join_type = (NOD_T) (int) (IPTR) node->nod_arg[e_rse_join_type]; + if (join_type != (NOD_T) 0 && join_type != nod_join_inner) { + STUFF(blr_join_type); + if (join_type == nod_join_left) +diff -Naur firebird-1.5.3.4870.old/src/qli/lex.cpp firebird-1.5.3.4870/src/qli/lex.cpp +--- firebird-1.5.3.4870.old/src/qli/lex.cpp 2006-08-06 06:47:19.000000000 +0200 ++++ firebird-1.5.3.4870/src/qli/lex.cpp 2006-08-06 08:03:26.000000000 +0200 +@@ -597,7 +597,7 @@ + for (temp = QLI_line; + temp->line_next && QLI_statements; + temp = temp->line_next) +-if (temp->line_next->line_position == (SLONG) QLI_statements->lls_object) return; ++if (temp->line_next->line_position == (SLONG) (IPTR) QLI_statements->lls_object) return; + + statement = (LLS) ALLOCP(type_lls); + statement->lls_object = (BLK) temp->line_position; +diff -Naur firebird-1.5.3.4870.old/src/qli/parse.cpp firebird-1.5.3.4870/src/qli/parse.cpp +--- firebird-1.5.3.4870.old/src/qli/parse.cpp 2006-08-06 06:47:19.000000000 +0200 ++++ firebird-1.5.3.4870/src/qli/parse.cpp 2006-08-06 08:04:28.000000000 +0200 +@@ -1524,7 +1524,7 @@ + IBERROR(176); /* Msg176 No statements issued yet */ + + if (MATCH(KW_ASTERISK)) +- LEX_edit((SLONG) 0, (SLONG) statement_list->lls_object); ++ LEX_edit((SLONG) 0, (SLONG) (IPTR) statement_list->lls_object); + else { + if (KEYWORD(KW_SEMI)) + l = 1; +@@ -1534,7 +1534,7 @@ + for (start = stop = statement_list; + l && start->lls_next; l--, start = start->lls_next); + command_end(); +- LEX_edit((SLONG) start->lls_object, (SLONG) stop->lls_object); ++ LEX_edit((SLONG) (IPTR) start->lls_object, (SLONG) (IPTR) stop->lls_object); + } + } + #ifdef PYXIS +@@ -2925,7 +2925,7 @@ + node->syn_arg[0] = INT_CAST 1; + if (op == nod_column || QLI_token->tok_type == tok_number) + node->syn_arg[0] = INT_CAST parse_ordinal(); +- if ((op == nod_skip) && ((int) node->syn_arg[0] < 1)) ++ if ((op == nod_skip) && ((int) (IPTR) node->syn_arg[0] < 1)) + SYNTAX_ERROR(478); /* Msg478 number > 0 */ + } + LLS_PUSH(node, &stack); +diff -Naur firebird-1.5.3.4870.old/src/qli/show.epp firebird-1.5.3.4870/src/qli/show.epp +--- firebird-1.5.3.4870.old/src/qli/show.epp 2006-08-06 06:47:19.000000000 +0200 ++++ firebird-1.5.3.4870/src/qli/show.epp 2006-08-06 08:05:12.000000000 +0200 +@@ -154,7 +154,7 @@ + ptr = node->syn_arg; + + for (i = 0; i < node->syn_count; i++) { +- sw = (ENUM show_t) (int) * ptr++; ++ sw = (ENUM show_t) (int)(IPTR) * ptr++; + value = *ptr++; + if (sw != show_matching_language && + sw != show_version && +diff -Naur firebird-1.5.3.4870.old/src/remote/inet_server.cpp firebird-1.5.3.4870/src/remote/inet_server.cpp +--- firebird-1.5.3.4870.old/src/remote/inet_server.cpp 2006-08-06 06:47:27.000000000 +0200 ++++ firebird-1.5.3.4870/src/remote/inet_server.cpp 2006-08-06 07:59:49.000000000 +0200 +@@ -380,7 +380,7 @@ + if (!debug) { + FD_ZERO(&mask); + FD_SET(2, &mask); +- divorce_terminal((int) &mask); ++ divorce_terminal((int) (IPTR) &mask); + } + { + ISC_STATUS_ARRAY status_vector; +diff -Naur firebird-1.5.3.4870.old/src/remote/interface.cpp firebird-1.5.3.4870/src/remote/interface.cpp +--- firebird-1.5.3.4870.old/src/remote/interface.cpp 2006-08-06 06:47:27.000000000 +0200 ++++ firebird-1.5.3.4870/src/remote/interface.cpp 2006-08-06 07:53:34.000000000 +0200 +@@ -3231,7 +3231,7 @@ + // Nickolay Samofatov: We pass this value to the server (as 32-bit value) + // then it returns it to us and we do not use it. Maybe pass zero here + // to avoid client-side security risks? +- event->p_event_ast = (SLONG) ast; ++ event->p_event_ast = (SLONG)(IPTR) ast; + event->p_event_arg = (SLONG)(IPTR) arg; + + event->p_event_rid = rem_event->rvnt_id; +@@ -6226,8 +6226,8 @@ + for (; to_desc < end_desc; from_desc++, to_desc++) { + from = *from_desc; + to = *to_desc; +- from.dsc_address = from_msg + (SLONG) from.dsc_address; +- to.dsc_address = to_msg + (SLONG) to.dsc_address; ++ from.dsc_address = from_msg + (SLONG)(IPTR) from.dsc_address; ++ to.dsc_address = to_msg + (SLONG)(IPTR) to.dsc_address; + CVT_move(&from, &to, (FPTR_VOID) move_error); + } + +diff -Naur firebird-1.5.3.4870.old/src/remote/protocol.cpp firebird-1.5.3.4870/src/remote/protocol.cpp +--- firebird-1.5.3.4870.old/src/remote/protocol.cpp 2006-08-06 06:47:27.000000000 +0200 ++++ firebird-1.5.3.4870/src/remote/protocol.cpp 2006-08-06 07:53:50.000000000 +0200 +@@ -984,7 +984,7 @@ + BLOB_PTR *p; + SSHORT n; + +- p = buffer + (ULONG) desc->dsc_address; ++ p = buffer + (ULONG) (IPTR) desc->dsc_address; + + switch (desc->dsc_dtype) { + case dtype_text: +diff -Naur firebird-1.5.3.4870.old/src/remote/server.cpp firebird-1.5.3.4870/src/remote/server.cpp +--- firebird-1.5.3.4870.old/src/remote/server.cpp 2006-08-06 06:47:27.000000000 +0200 ++++ firebird-1.5.3.4870/src/remote/server.cpp 2006-08-06 08:00:17.000000000 +0200 +@@ -4361,7 +4361,7 @@ + + // Nickolay Samofatov: We keep this values and even pass them to the client + // (as 32-bit values) when event is fired, but client ignores them. +- p_event->p_event_ast = (SLONG) event->rvnt_ast; ++ p_event->p_event_ast = (SLONG)(IPTR) event->rvnt_ast; + p_event->p_event_arg = (SLONG)(IPTR) event->rvnt_arg; + + p_event->p_event_rid = event->rvnt_rid; +diff -Naur firebird-1.5.3.4870.old/src/utilities/gsec.cpp firebird-1.5.3.4870/src/utilities/gsec.cpp +--- firebird-1.5.3.4870.old/src/utilities/gsec.cpp 2006-08-06 06:47:32.000000000 +0200 ++++ firebird-1.5.3.4870/src/utilities/gsec.cpp 2006-08-06 07:57:42.000000000 +0200 +@@ -96,7 +96,7 @@ + int exit_code; + + exit_code = UTIL_gsec(service->svc_argc, service->svc_argv, +- output_svc, (SLONG) service); ++ output_svc, (SLONG) (IPTR) service); + + /* Mark service thread as finished. */ + /* If service is detached, cleanup memory being used by service. */ +diff -Naur firebird-1.5.3.4870.old/src/wal/walw.cpp firebird-1.5.3.4870/src/wal/walw.cpp +--- firebird-1.5.3.4870.old/src/wal/walw.cpp 2006-08-06 06:47:20.000000000 +0200 ++++ firebird-1.5.3.4870/src/wal/walw.cpp 2006-08-06 07:57:21.000000000 +0200 +@@ -199,7 +199,7 @@ + #ifdef SUPERSERVER + int argc; + +- argc = (int) argv[0]; ++ argc = (int) (IPTR) argv[0]; + #endif + + dbname = ""; +diff -Naur firebird-1.5.3.4870.old/src/dudley/exe.epp firebird-1.5.3.4870/src/dudley/exe.epp +--- firebird-1.5.3.4870.old/src/dudley/exe.epp 2006-08-06 06:47:26.000000000 +0200 ++++ firebird-1.5.3.4870/src/dudley/exe.epp 2006-08-06 08:06:25.000000000 +0200 +@@ -626,7 +626,7 @@ + break; + + case act_d_shadow: +- drop_shadow((SLONG) action->act_object); ++ drop_shadow((SLONG) (IPTR) action->act_object); + break; + + case act_a_generator: + +--- firebird/src/jrd/jrd.h~ 2005-06-07 12:22:40.000000000 +0200 ++++ firebird/src/jrd/jrd.h 2006-08-20 15:31:53.734361000 +0200 +@@ -1050,8 +1050,10 @@ + + #if !defined(REQUESTER) + ++extern "C" { + extern int debug; + extern IHNDL internal_db_handles; ++} + + #endif /* REQUESTER */ +