From: Jakub Bogusz Date: Sat, 24 Dec 2005 16:00:35 +0000 (+0000) Subject: - at least builds on x86 using gcc 4.1 X-Git-Tag: auto/th/Firebird-1_5_3_4870-1~4 X-Git-Url: http://git.pld-linux.org/?p=packages%2FFirebird.git;a=commitdiff_plain;h=0d54301ec0564198c275e3b4043882e8bda7f0c9 - at least builds on x86 using gcc 4.1 Changed files: Firebird-gcc4.patch -> 1.3 --- diff --git a/Firebird-gcc4.patch b/Firebird-gcc4.patch index cea3a87..08a84e0 100644 --- a/Firebird-gcc4.patch +++ b/Firebird-gcc4.patch @@ -1,641 +1,80 @@ ---- 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 @@ - #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) { - 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) { - 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; - } - --int Config::getSortMemBlockSize() -+size_t Config::getSortMemBlockSize() - { -- return (int) sysConfig.values[KEY_SORT_MEM_BLOCK_SIZE]; -+ return (size_t) sysConfig.values[KEY_SORT_MEM_BLOCK_SIZE]; - } - --int Config::getSortMemUpperLimit() -+size_t Config::getSortMemUpperLimit() - { -- return (int) sysConfig.values[KEY_SORT_MEM_UPPER_LIMIT]; -+ return (size_t) sysConfig.values[KEY_SORT_MEM_UPPER_LIMIT]; - } - - bool Config::getRemoteFileOpenAbility() -@@ -272,14 +272,14 @@ - return (bool) sysConfig.values[KEY_REMOTE_FILE_OPEN_ABILITY]; - } - --int Config::getGuardianOption() -+size_t Config::getGuardianOption() - { -- return (int) sysConfig.values[KEY_GUARDIAN_OPTION]; -+ return (size_t) sysConfig.values[KEY_GUARDIAN_OPTION]; - } - --int Config::getCpuAffinityMask() -+size_t Config::getCpuAffinityMask() - { -- return (int) sysConfig.values[KEY_CPU_AFFINITY_MASK]; -+ return (size_t) sysConfig.values[KEY_CPU_AFFINITY_MASK]; - } - - bool Config::getOldParameterOrdering() -@@ -287,9 +287,9 @@ - return (bool) sysConfig.values[KEY_OLD_PARAMETER_ORDERING]; - } - --int Config::getTcpRemoteBufferSize() -+size_t Config::getTcpRemoteBufferSize() - { -- return (int) sysConfig.values[KEY_TCP_REMOTE_BUFFER_SIZE]; -+ return (size_t) sysConfig.values[KEY_TCP_REMOTE_BUFFER_SIZE]; - } - - bool Config::getTcpNoNagle() -@@ -297,39 +297,39 @@ - return (bool) sysConfig.values[KEY_TCP_NO_NAGLE]; - } - --int Config::getIpcMapSize() -+size_t Config::getIpcMapSize() - { -- return (int) sysConfig.values[KEY_IPC_MAP_SIZE]; -+ return (size_t) sysConfig.values[KEY_IPC_MAP_SIZE]; - } - --int Config::getDefaultDbCachePages() -+size_t Config::getDefaultDbCachePages() - { -- return (int) sysConfig.values[KEY_DEFAULT_DB_CACHE_PAGES]; -+ return (size_t) sysConfig.values[KEY_DEFAULT_DB_CACHE_PAGES]; - } - --int Config::getConnectionTimeout() -+size_t Config::getConnectionTimeout() - { -- return (int) sysConfig.values[KEY_CONNECTION_TIMEOUT]; -+ return (size_t) sysConfig.values[KEY_CONNECTION_TIMEOUT]; - } - --int Config::getDummyPacketInterval() -+size_t Config::getDummyPacketInterval() - { -- return (int) sysConfig.values[KEY_DUMMY_PACKET_INTERVAL]; -+ return (size_t) sysConfig.values[KEY_DUMMY_PACKET_INTERVAL]; - } - --int Config::getLockMemSize() -+size_t Config::getLockMemSize() - { -- return (int) sysConfig.values[KEY_LOCK_MEM_SIZE]; -+ return (size_t) sysConfig.values[KEY_LOCK_MEM_SIZE]; - } - --int Config::getLockSemCount() -+size_t Config::getLockSemCount() - { -- return (int) sysConfig.values[KEY_LOCK_SEM_COUNT]; -+ return (size_t) sysConfig.values[KEY_LOCK_SEM_COUNT]; - } - --int Config::getLockSignal() -+size_t Config::getLockSignal() - { -- return (int) sysConfig.values[KEY_LOCK_SIGNAL]; -+ return (size_t) sysConfig.values[KEY_LOCK_SIGNAL]; - } - - bool Config::getLockGrantOrder() -@@ -337,29 +337,29 @@ - return (bool) sysConfig.values[KEY_LOCK_GRANT_ORDER]; - } - --int Config::getLockHashSlots() -+size_t Config::getLockHashSlots() - { -- return (int) sysConfig.values[KEY_LOCK_HASH_SLOTS]; -+ return (size_t) sysConfig.values[KEY_LOCK_HASH_SLOTS]; - } - --int Config::getLockAcquireSpins() -+size_t Config::getLockAcquireSpins() - { -- return (int) sysConfig.values[KEY_LOCK_ACQUIRE_SPINS]; -+ return (size_t) sysConfig.values[KEY_LOCK_ACQUIRE_SPINS]; - } - --int Config::getEventMemSize() -+size_t Config::getEventMemSize() - { -- return (int) sysConfig.values[KEY_EVENT_MEM_SIZE]; -+ return (size_t) sysConfig.values[KEY_EVENT_MEM_SIZE]; - } - --int Config::getDeadlockTimeout() -+size_t Config::getDeadlockTimeout() - { -- return (int) sysConfig.values[KEY_DEADLOCK_TIMEOUT]; -+ return (size_t) sysConfig.values[KEY_DEADLOCK_TIMEOUT]; - } - --int Config::getSolarisStallValue() -+size_t Config::getSolarisStallValue() - { -- return (int) sysConfig.values[KEY_SOLARIS_STALL_VALUE]; -+ return (size_t) sysConfig.values[KEY_SOLARIS_STALL_VALUE]; - } - - bool Config::getTraceMemoryPools() -@@ -367,25 +367,25 @@ - return (bool) sysConfig.values[KEY_TRACE_MEMORY_POOLS]; - } - --int Config::getPrioritySwitchDelay() -+size_t Config::getPrioritySwitchDelay() - { -- int rc = (int) sysConfig.values[KEY_PRIORITY_SWITCH_DELAY]; -+ size_t rc = (size_t) sysConfig.values[KEY_PRIORITY_SWITCH_DELAY]; - if (rc < 1) - rc = 1; - return rc; - } - --int Config::getDeadThreadsCollection() -+size_t Config::getDeadThreadsCollection() - { -- int rc = (int) sysConfig.values[KEY_DEAD_THREADS_COLLECTION]; -+ size_t rc = (size_t) sysConfig.values[KEY_DEAD_THREADS_COLLECTION]; - if (rc < 1) - rc = 1; - return rc; - } - --int Config::getPriorityBoost() -+size_t Config::getPriorityBoost() - { -- int rc = (int) sysConfig.values[KEY_PRIORITY_BOOST]; -+ size_t rc = (size_t) 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]; - } - --int Config::getRemoteServicePort() -+size_t Config::getRemoteServicePort() - { -- return (int) sysConfig.values[KEY_REMOTE_SERVICE_PORT]; -+ return (size_t) sysConfig.values[KEY_REMOTE_SERVICE_PORT]; - } - - const char *Config::getRemotePipeName() -@@ -413,19 +413,19 @@ - return (const char*) sysConfig.values[KEY_IPC_NAME]; - } - --int Config::getMaxUnflushedWrites() -+size_t Config::getMaxUnflushedWrites() - { -- return (int) sysConfig.values[KEY_MAX_UNFLUSHED_WRITES]; -+ return (size_t) sysConfig.values[KEY_MAX_UNFLUSHED_WRITES]; - } - --int Config::getMaxUnflushedWriteTime() -+size_t Config::getMaxUnflushedWriteTime() - { -- return (int) sysConfig.values[KEY_MAX_UNFLUSHED_WRITE_TIME]; -+ return (size_t) sysConfig.values[KEY_MAX_UNFLUSHED_WRITE_TIME]; - } - --int Config::getProcessPriorityLevel() -+size_t Config::getProcessPriorityLevel() - { -- return (int) sysConfig.values[KEY_PROCESS_PRIORITY_LEVEL]; -+ return (size_t) 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() - { - #ifdef SUPERSERVER -- return (int) sysConfig.values[KEY_REMOTE_AUX_PORT]; -+ return (size_t) 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; - - if (stdio_flag) -- if (!(result = ib_fdopen((int) result, "w+"))) -+ if (!(result = ib_fdopen((int)(IPTR) result, "w+"))) - return (void *)-1; - - 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 -@@ -204,7 +204,7 @@ - - case ACT_drop_shadow: - put_numeric(request, gds_dyn_delete_shadow, -- (SSHORT) 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 -@@ -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]) - { - case KW_YEAR: - STUFF(blr_extract_year); -@@ -478,7 +478,7 @@ - // ** Begin date/time/timestamp support * - case nod_extract: - { -- KWWORDS kw_word = (KWWORDS) (int) node->nod_arg[0]; -+ KWWORDS kw_word = (KWWORDS) (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 @@ - - 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 @@ - 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 = (IPTR) event_init->nod_arg[2]; - 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 @@ - - 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)); - - 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. */ - - 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 @@ +--- firebird-1.5.2.4731/src/jrd/met.epp.orig 2004-09-15 00:01:51.000000000 +0200 ++++ firebird-1.5.2.4731/src/jrd/met.epp 2005-12-24 12:57:15.942243120 +0100 +@@ -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 == (IPTR) (*references->frgn_reference_ids) ++ if (idx->idx_id == (UCHAR)(size_t) (*references->frgn_reference_ids) [index_number]) { idx->idx_primary_relation = - (USHORT) (*references->frgn_relations)[index_number]; -+ (IPTR) (*references->frgn_relations)[index_number]; ++ (USHORT)(size_t) (*references->frgn_relations)[index_number]; idx->idx_primary_index = - (UCHAR) (*references->frgn_indexes)[index_number]; -+ (IPTR) (*references->frgn_indexes)[index_number]; ++ (UCHAR)(size_t) (*references->frgn_indexes)[index_number]; return TRUE; } } -@@ -3203,7 +3203,7 @@ +@@ -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 == (IPTR) (*dependencies->prim_reference_ids) ++ if (idx->idx_id == (UCHAR)(size_t) (*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 @@ +@@ -4542,7 +4542,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]; ++ dpdo_type = (SSHORT)(size_t) 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 @@ +@@ -4579,7 +4579,7 @@ { if (field_node->nod_type == nod_field) { - fld_id = (SSHORT) field_node->nod_arg[0]; -+ fld_id = (IPTR) field_node->nod_arg[0]; ++ fld_id = (SSHORT)(size_t) 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 -@@ -860,8 +860,8 @@ +--- firebird-1.5.2.4731/src/jrd/blb.cpp.orig 2004-04-27 03:44:57.000000000 +0200 ++++ firebird-1.5.2.4731/src/jrd/blb.cpp 2005-12-24 13:08:13.803233048 +0100 +@@ -860,7 +860,7 @@ 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)(size_t) field->nod_arg[e_fld_id]; + rpb = &request->req_rpb[(int) 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 +--- firebird-1.5.2.4731/src/jrd/cmp.cpp.orig 2004-12-03 08:59:29.000000000 +0100 ++++ firebird-1.5.2.4731/src/jrd/cmp.cpp 2005-12-24 13:17:54.373972880 +0100 +@@ -487,7 +487,7 @@ + /* Clone the request */ + + n = +- (USHORT) ((request->req_impure_size - REQ_SIZE + REQ_TAIL - 1) / ++ (USHORT)(size_t) ((request->req_impure_size - REQ_SIZE + REQ_TAIL - 1) / + REQ_TAIL); + clone = FB_NEW_RPT(*request->req_pool, n) jrd_req(request->req_pool); + (*vector)[level] = (BLK) clone; @@ -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)(size_t) 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)(size_t) node->nod_arg[e_fld_stream]); if (id >= format->fmt_count) { desc->dsc_dtype = dtype_null; desc->dsc_length = 0; @@ -644,39 +83,21 @@ sub = node->nod_arg[e_scl_field]; relation = - csb->csb_rpt[(USHORT) sub-> -+ csb->csb_rpt[(IPTR) sub-> ++ csb->csb_rpt[(USHORT)(size_t) 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)(size_t) 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 */ -@@ -1661,7 +1661,7 @@ - return; - - 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) { - /* QUADDATE - SECOND returns a float, or scaled! */ - desc->dsc_dtype = dtype_long; - desc->dsc_length = sizeof(ULONG); -@@ -1720,7 +1720,7 @@ - - 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]]; - return; - } - @@ -2651,8 +2651,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)(size_t) input->nod_arg[e_fld_id]; ++ stream = (USHORT)(size_t) input->nod_arg[e_fld_stream]; if (remap_fld) { JRD_REL relation; JRD_FLD field; @@ -685,7 +106,7 @@ 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)(size_t) field->fld_source->nod_arg[e_fld_id]; } if (remap) stream = remap[stream]; @@ -694,7 +115,7 @@ node->nod_count = 0; - stream = (USHORT) input->nod_arg[e_rel_stream]; -+ stream = (IPTR) input->nod_arg[e_rel_stream]; ++ stream = (USHORT)(size_t) 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 @@ -703,7 +124,7 @@ 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)(size_t) 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 */ @@ -712,7 +133,7 @@ // 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)(size_t)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; @@ -721,7 +142,7 @@ 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)(size_t) input->nod_arg[e_agg_stream]; assert(stream <= MAX_STREAMS); new_stream = (*csb)->csb_n_stream++; assert(new_stream <= MAX_STREAMS); @@ -730,7 +151,7 @@ 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)(size_t) 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 */ @@ -739,7 +160,7 @@ JRD_REL relation; - stream = (USHORT) node->nod_arg[e_rel_stream]; -+ stream = (IPTR) node->nod_arg[e_rel_stream]; ++ stream = (USHORT)(size_t) 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) ) @@ -748,7 +169,7 @@ UCHAR *map, local_map[MAP_LENGTH]; - stream = (USHORT) node->nod_arg[e_fld_stream]; -+ stream = (IPTR) node->nod_arg[e_fld_stream]; ++ stream = (USHORT)(size_t) 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 @@ -757,7 +178,7 @@ !(field = MET_get_field(relation, - (USHORT) node->nod_arg[e_fld_id]))) break; -+ (IPTR) node->nod_arg[e_fld_id]))) break; ++ (USHORT)(size_t) node->nod_arg[e_fld_id]))) break; /* if this is a modify or store, check REFERENCES access to any foreign keys. */ @@ -766,10 +187,10 @@ 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)(size_t) 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)(size_t) sub->nod_arg[e_fld_id]); if (field) node->nod_arg[e_asgn_missing2] = field->fld_missing_value; } @@ -778,13 +199,13 @@ 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)(size_t) 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)(size_t) 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; @@ -793,7 +214,7 @@ case nod_modify: - stream = (USHORT) node->nod_arg[e_mod_new_stream]; -+ stream = (IPTR) node->nod_arg[e_mod_new_stream]; ++ stream = (USHORT)(size_t) node->nod_arg[e_mod_new_stream]; tail = &(*csb)->csb_rpt[stream]; tail->csb_flags |= csb_modify; pass1_modify(tdbb, csb, node); @@ -802,14 +223,14 @@ if ( (node->nod_arg[e_mod_validate] = make_validation(tdbb, csb, - (USHORT) node-> -+ (IPTR) node-> ++ (USHORT)(size_t) 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)(size_t) node->nod_arg[e_erase_stream]; tail = &(*csb)->csb_rpt[stream]; tail->csb_flags |= csb_erase; pass1_erase(tdbb, csb, node); @@ -818,13 +239,13 @@ 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)(size_t) 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)(size_t) 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 = @@ -833,7 +254,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)(size_t) 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] = @@ -842,7 +263,7 @@ type = node->nod_type; - stream = (USHORT) node->nod_arg[0]; -+ stream = (IPTR) node->nod_arg[0]; ++ stream = (USHORT)(size_t) node->nod_arg[0]; if (!(*csb)->csb_rpt[stream].csb_map) return node; @@ -851,7 +272,7 @@ case nod_cardinality: - stream = (USHORT) node->nod_arg[e_card_stream]; -+ stream = (IPTR) node->nod_arg[e_card_stream]; ++ stream = (USHORT)(size_t) node->nod_arg[e_card_stream]; (*csb)->csb_rpt[stream].csb_flags |= csb_compute; break; @@ -860,7 +281,7 @@ 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)(size_t) node->nod_arg[e_erase_stream]; tail = &(*csb)->csb_rpt[stream]; tail->csb_flags |= csb_erase; relation = (*csb)->csb_rpt[stream].csb_relation; @@ -869,7 +290,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)(size_t) source->nod_arg[e_rel_stream]; node->nod_arg[e_erase_stream] = (JRD_NOD) (SLONG) map[new_stream]; } } @@ -878,7 +299,7 @@ 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)(size_t) (JRD_NOD) (field->fld_source)->nod_arg[e_fld_id]; else new_id = id; } @@ -888,8 +309,8 @@ 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)(size_t) node->nod_arg[e_mod_org_stream]; ++ new_stream = (USHORT)(size_t) 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; @@ -898,7 +319,7 @@ 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)(size_t) source->nod_arg[e_rel_stream]; stream = map[stream]; view_stream = new_stream; @@ -907,12 +328,12 @@ map = alloc_map(tdbb, csb, - (SSHORT) node->nod_arg[e_mod_new_stream]); -+ (IPTR) node->nod_arg[e_mod_new_stream]); ++ (SSHORT)(size_t) 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)(size_t) 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,7 +341,7 @@ 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)(size_t) 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 = @@ -929,7 +350,7 @@ 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)(size_t) source->nod_arg[e_rel_stream]; node->nod_arg[e_mod_org_stream] = (JRD_NOD) (SLONG) map[stream]; /* Next, do update stream */ @@ -937,7 +358,7 @@ map = alloc_map(tdbb, csb, - (SSHORT) node->nod_arg[e_mod_new_stream]); -+ (IPTR) node->nod_arg[e_mod_new_stream]); ++ (SSHORT)(size_t) 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]; } @@ -946,7 +367,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)(size_t)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); @@ -955,7 +376,7 @@ 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)(size_t) 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 */ @@ -964,7 +385,7 @@ 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)(size_t) source->nod_arg[e_rel_context]) { element->csb_alias = (*vcx_ptr)->vcx_context_name; break; } @@ -973,7 +394,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)(size_t) original->nod_arg[e_rel_stream]; tail = &(*csb)->csb_rpt[stream]; tail->csb_flags |= csb_store; relation = (*csb)->csb_rpt[stream].csb_relation; @@ -982,7 +403,7 @@ 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)(size_t) 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] = @@ -991,10 +412,10 @@ 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)(size_t) 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)(size_t) node->nod_arg[e_mod_new_stream]; csb->csb_rpt[stream].csb_flags |= csb_active; } @@ -1003,10 +424,10 @@ 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)(size_t) 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)(size_t) node->nod_arg[e_mod_new_stream]; csb->csb_rpt[stream].csb_flags &= ~csb_active; } @@ -1015,7 +436,7 @@ 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)(size_t) 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(); @@ -1024,15 +445,15 @@ case nod_erase: - stream = (USHORT) node->nod_arg[e_erase_stream]; -+ stream = (IPTR) node->nod_arg[e_erase_stream]; ++ stream = (USHORT)(size_t) 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)(size_t) node->nod_arg[e_fld_stream]; ++ id = (USHORT)(size_t) 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); @@ -1041,7 +462,7 @@ 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)(size_t) 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); @@ -1050,7 +471,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)(size_t) node->nod_arg[e_rel_stream]; csb->csb_rpt[stream].csb_flags |= csb_active; pass2(tdbb, csb, node, (JRD_NOD) rse); } @@ -1059,13 +480,13 @@ } 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)(size_t) 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)(size_t) 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); @@ -1074,7 +495,7 @@ 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)(size_t) node->nod_arg[e_uni_stream]; format = &csb->csb_rpt[id].csb_format; /* Process alternating rse and map blocks */ @@ -1083,7 +504,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)(size_t) (*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); @@ -1092,7 +513,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)(size_t) plan_relation_node->nod_arg[e_rel_stream]; tail = &csb->csb_rpt[stream]; /* if the plan references a view, find the real base relation @@ -1101,17 +522,17 @@ 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)(size_t) 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)(size_t) 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)(size_t) node->nod_arg[e_agg_stream]; assert(stream <= MAX_STREAMS); csb->csb_rpt[stream].csb_flags &= ~csb_active; } @@ -1120,7 +541,7 @@ 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)(size_t) field->nod_arg[e_fld_id]; if (id >= format->fmt_count) { format->fmt_desc.resize(id + 1); } @@ -1129,14 +550,795 @@ 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)(size_t) 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)(size_t) sub->nod_arg[e_rel_stream])) return TRUE; /* do not mark as variant */ } +--- firebird-1.5.2.4731/src/jrd/evl.cpp.orig 2004-10-12 17:34:39.000000000 +0200 ++++ firebird-1.5.2.4731/src/jrd/evl.cpp 2005-12-24 13:31:35.388159752 +0100 +@@ -289,7 +289,7 @@ + // 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], ++ EVL_field(0, record, (USHORT)(size_t) 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)(size_t) node->nod_arg[1]; + numbers = desc->dsc_address; + numbers += id * sizeof(SLONG); + MOVE_FAST(numbers, &rel_dbkey, sizeof(SLONG)); +@@ -856,9 +856,9 @@ + * 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)(size_t) node->nod_arg[e_fld_stream]].rpb_relation, + record, +- (USHORT) node->nod_arg[e_fld_id], ++ (USHORT)(size_t) node->nod_arg[e_fld_id], + &impure->vlu_desc)) + { + request->req_flags |= req_null; +@@ -1725,7 +1725,7 @@ + { + from = (*ptr)->nod_arg[e_asgn_from]; + field = (*ptr)->nod_arg[e_asgn_to]; +- id = (USHORT) field->nod_arg[e_fld_id]; ++ id = (USHORT)(size_t) field->nod_arg[e_fld_id]; + record = + request->req_rpb[(int) field->nod_arg[e_fld_stream]].rpb_record; + impure = (VLUX) ((SCHAR *) request + from->nod_impure); +--- firebird-1.5.2.4731/src/jrd/exe.cpp.orig 2004-11-06 07:07:51.000000000 +0100 ++++ firebird-1.5.2.4731/src/jrd/exe.cpp 2005-12-24 13:33:42.787792064 +0100 +@@ -375,7 +375,7 @@ + + if (to->nod_type == nod_field) + { +- SSHORT id = (USHORT) to->nod_arg[e_fld_id]; ++ SSHORT id = (USHORT)(size_t) to->nod_arg[e_fld_id]; + REC record = request->req_rpb[(int) to->nod_arg[e_fld_stream]].rpb_record; + if (null) { + SET_NULL(record, id); +@@ -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)(size_t) 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)(size_t) 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)(size_t) message->nod_arg[e_msg_number]) + ERR_post(gds_req_sync, 0); + + if (length != format->fmt_length) +@@ -2016,7 +2016,7 @@ + case jrd_req::req_evaluate: + if (transaction != dbb->dbb_sys_trans) { + +- UCHAR operation = (UCHAR) node->nod_arg[e_sav_operation]; ++ UCHAR operation = (UCHAR)(size_t) node->nod_arg[e_sav_operation]; + TEXT * node_savepoint_name = (TEXT*) node->nod_arg[e_sav_name]; + + // Skip the savepoint created by EXE_start +@@ -2329,7 +2329,7 @@ + break; + + case jrd_req::req_unwind: +- if ((request->req_label == (USHORT) node->nod_arg[e_lbl_label]) && ++ if ((request->req_label == (USHORT)(size_t) 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; +@@ -2343,7 +2343,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)(size_t) node->nod_arg[0]; + node = node->nod_parent; + break; + +@@ -2795,11 +2795,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)(size_t) 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)(size_t) node->nod_arg[e_mod_new_stream]; + new_rpb = &request->req_rpb[new_stream]; + + #ifdef PC_ENGINE +@@ -3796,7 +3796,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)(size_t) node->nod_arg[e_sto_relation]->nod_arg[e_rel_stream]; + RPB* rpb = &request->req_rpb[stream]; + JRD_REL relation = rpb->rpb_relation; + +@@ -4202,8 +4202,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)(size_t) node->nod_arg[e_fld_stream]; ++ id = (USHORT)(size_t) node->nod_arg[e_fld_id]; + relation = request->req_rpb[stream].rpb_relation; + + if ((vector = relation->rel_fields) && +--- firebird-1.5.2.4731/src/jrd/ext.cpp.orig 2003-06-16 17:42:58.000000000 +0200 ++++ firebird-1.5.2.4731/src/jrd/ext.cpp 2005-12-24 13:34:26.333172160 +0100 +@@ -266,7 +266,7 @@ + record = rpb->rpb_record; + format = record->rec_format; + +- offset = (SSHORT) format->fmt_desc[0].dsc_address; ++ offset = (SSHORT)(size_t) format->fmt_desc[0].dsc_address; + p = record->rec_data + offset; + l = record->rec_length - offset; + +@@ -528,7 +528,7 @@ + } + } + +- offset = (USHORT) format->fmt_desc[0].dsc_address; ++ offset = (USHORT)(size_t) format->fmt_desc[0].dsc_address; + p = record->rec_data + offset; + l = record->rec_length - offset; + +--- firebird-1.5.2.4731/src/jrd/idx.cpp.orig 2004-09-15 00:01:50.000000000 +0200 ++++ firebird-1.5.2.4731/src/jrd/idx.cpp 2005-12-24 13:35:08.531757000 +0100 +@@ -1051,12 +1051,12 @@ + index_number < idx->idx_foreign_primaries->count(); + index_number++) { + if (idx->idx_id != +- (UCHAR) (*idx->idx_foreign_primaries)[index_number]) continue; ++ (UCHAR)(size_t) (*idx->idx_foreign_primaries)[index_number]) continue; + partner_relation = + MET_relation(tdbb, + (int) (*idx->idx_foreign_relations)[index_number]); + index_id = +- (USHORT) (*idx->idx_foreign_indexes)[index_number]; ++ (USHORT)(size_t) (*idx->idx_foreign_indexes)[index_number]; + if ( (result = + check_partner_index(tdbb, relation, record, transaction, idx, + partner_relation, index_id)) ) +--- firebird-1.5.2.4731/src/jrd/opt.cpp.orig 2004-11-27 16:57:53.000000000 +0100 ++++ firebird-1.5.2.4731/src/jrd/opt.cpp 2005-12-24 13:42:07.610047416 +0100 +@@ -380,7 +380,7 @@ + + if (node->nod_type != nod_rse) + { +- stream = (USHORT) node->nod_arg[STREAM_INDEX(node)]; ++ stream = (USHORT)(size_t) 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)(size_t) 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)(size_t) 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)(size_t) 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)(size_t) 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)(size_t) 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)(size_t) 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)(size_t) (*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)(size_t) (*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)(size_t) node->nod_arg[e_fld_stream]; + SET_DEP_BIT(dependencies, n); + return; + + case nod_dbkey: +- n = (USHORT) node->nod_arg[0]; ++ n = (USHORT)(size_t) 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)(size_t) (*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)(size_t) 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)(size_t) 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)(size_t) 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)(size_t) 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)(size_t) 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)(size_t) node->nod_arg[e_fld_stream] != stream ++ || (USHORT)(size_t) 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)(size_t) 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)(size_t)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)(size_t) 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)(size_t) node->nod_arg[e_fld_stream] == *ptr ++ && (USHORT)(size_t) 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)(size_t) node->nod_arg[e_fld_stream]; ++ map_item->smb_field_id = (USHORT)(size_t) 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)(size_t) LLS_POP(&id_stack); ++ stream = (USHORT)(size_t) 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)(size_t) 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)(size_t) field->nod_arg[e_fld_stream] != stream || ++ (USHORT)(size_t) 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)(size_t) field->nod_arg[e_fld_stream] != stream || ++ (USHORT)(size_t) 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)(size_t) * 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)(size_t) * (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)(size_t) 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)(size_t) 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)(size_t) 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)(size_t) 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)(size_t) node->nod_arg[STREAM_INDEX(node)]; + csb->csb_rpt[stream].csb_flags &= ~csb_active; + } + else +--- firebird-1.5.2.4731/src/jrd/par.cpp.orig 2004-06-19 10:11:45.000000000 +0200 ++++ firebird-1.5.2.4731/src/jrd/par.cpp 2005-12-24 13:43:37.660357688 +0100 +@@ -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)(size_t) node->nod_arg[e_agg_stream]); + break; + + case blr_group_by: +--- firebird-1.5.2.4731/src/jrd/rse.cpp.orig 2004-10-09 16:14:53.000000000 +0200 ++++ firebird-1.5.2.4731/src/jrd/rse.cpp 2005-12-24 13:47:46.019601344 +0100 +@@ -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)(size_t) * ptr; ++ptr <= end;) ++ request->req_rpb[(USHORT)(size_t) * 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)(size_t) 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)(size_t) 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)(size_t) 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); +--- firebird-1.5.2.4731/src/qli/command.cpp.orig 2003-04-03 11:34:54.000000000 +0200 ++++ firebird-1.5.2.4731/src/qli/command.cpp 2005-12-24 15:04:12.438359712 +0100 +@@ -311,32 +311,32 @@ + ptr = node->syn_arg; + + for (i = 0; i < node->syn_count; i++) { +- foo = (USHORT) * ptr++; ++ foo = (USHORT)(size_t) * ptr++; + sw = (ENUM set_t) foo; + value = *ptr++; + switch (sw) { + case set_blr: +- QLI_blr = (USHORT) value; ++ QLI_blr = (USHORT)(size_t) value; + break; + + case set_statistics: +- QLI_statistics = (USHORT) value; ++ QLI_statistics = (USHORT)(size_t) value; + break; + + case set_columns: +- QLI_name_columns = QLI_columns = (USHORT) value; ++ QLI_name_columns = QLI_columns = (USHORT)(size_t) value; + break; + + case set_lines: +- QLI_lines = (USHORT) value; ++ QLI_lines = (USHORT)(size_t) value; + break; + + case set_semi: +- QLI_semi = (USHORT) value; ++ QLI_semi = (USHORT)(size_t) value; + break; + + case set_echo: +- QLI_echo = (USHORT) value; ++ QLI_echo = (USHORT)(size_t) value; + break; + + case set_form: +@@ -399,7 +399,7 @@ + break; + + case set_count: +- QLI_count = (USHORT) value; ++ QLI_count = (USHORT)(size_t) value; + break; + + case set_charset: +--- firebird-1.5.2.4731/src/qli/expand.cpp.orig 2003-04-03 11:34:52.000000000 +0200 ++++ firebird-1.5.2.4731/src/qli/expand.cpp 2005-12-24 15:04:49.271760184 +0100 +@@ -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)(size_t) 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]; +--- firebird-1.5.2.4731/src/qli/meta.epp.orig 2004-09-17 22:34:59.000000000 +0200 ++++ firebird-1.5.2.4731/src/qli/meta.epp 2005-12-24 15:20:58.941348000 +0100 +@@ -3795,7 +3795,7 @@ + RLB rlb; + + +- privileges = (USHORT) node->syn_arg[s_grant_privileges]; ++ privileges = (USHORT)(size_t) 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; +--- firebird-1.5.2.4731/src/burp/burp.cpp.orig 2004-01-07 11:10:18.000000000 +0100 ++++ firebird-1.5.2.4731/src/burp/burp.cpp 2005-12-24 13:57:23.889751728 +0100 +@@ -1606,7 +1606,7 @@ + #ifndef WIN_NT + signal(SIGPIPE, SIG_IGN); + #endif +- fil->fil_fd = reinterpret_cast(GBAK_STDOUT_DESC); ++ fil->fil_fd = (DESC)(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 = (DESC)(GBAK_STDIN_DESC); + tdgbl->file_desc = fil->fil_fd; + tdgbl->gbl_sw_files = fil->fil_next; + } +--- firebird-1.5.2.4731/src/dsql/parse.cpp.orig 2004-01-31 14:31:48.000000000 +0100 ++++ firebird-1.5.2.4731/src/dsql/parse.cpp 2005-12-24 16:11:42.519653768 +0100 +@@ -6431,7 +6431,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)(size_t) yyvsp[-2]; } + break; + case 80: + { yyval = (DSQL_NOD) NULL; } +@@ -7551,27 +7551,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)(size_t) 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)(size_t) yyvsp[-3]; ++ lex.g_field->fld_sub_type = (USHORT)(size_t) 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)(size_t) yyvsp[-1]; + } + break; + case 510: + { +- lex.g_field->fld_seg_length = (USHORT) yyvsp[0]; ++ lex.g_field->fld_seg_length = (USHORT)(size_t) yyvsp[0]; + } + break; + case 511: +@@ -7581,7 +7581,7 @@ + break; + case 512: + { +- lex.g_field->fld_sub_type = (USHORT) yyvsp[0]; ++ lex.g_field->fld_sub_type = (USHORT)(size_t) yyvsp[0]; + } + break; + case 513: +@@ -7602,7 +7602,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)(size_t) yyvsp[-1]; + lex.g_field->fld_flags |= FLD_national; + } + break; +@@ -7616,14 +7616,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)(size_t) 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)(size_t) yyvsp[-1]; + } + break; + case 521: +@@ -7635,7 +7635,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)(size_t) yyvsp[-1]; + } + break; + case 531: +@@ -7715,7 +7715,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)(size_t) yyvsp[-1]; + } + break; + case 536: +@@ -7775,8 +7775,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)(size_t) yyvsp[-3]; ++ lex.g_field->fld_scale = - (SSHORT)(size_t) yyvsp[-1]; + } + break; + case 539: +@@ -7942,7 +7942,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)(size_t) yyvsp[-1] | (SSHORT)(size_t) yyvsp[0]), (SSHORT) 0, NULL); } + break; + case 603: + { yyval = 0; } +--- firebird-1.5.2.4731/src/gpre/cmd.cpp.orig 2003-10-30 23:25:53.000000000 +0100 ++++ firebird-1.5.2.4731/src/gpre/cmd.cpp 2005-12-24 12:30:50.312295512 +0100 +@@ -204,7 +204,7 @@ + + case ACT_drop_shadow: + put_numeric(request, gds_dyn_delete_shadow, +- (SSHORT) action->act_object); ++ (SSHORT)(size_t) action->act_object); + STUFF_END; + break; + +--- firebird-1.5.2.4731/src/common/classes/alloc.h.orig 2004-09-17 22:34:27.000000000 +0200 ++++ firebird-1.5.2.4731/src/common/classes/alloc.h 2005-12-24 12:27:24.200629248 +0100 +@@ -242,22 +242,22 @@ + void operator delete[](void* mem) throw(); + + #ifdef DEBUG_GDS_ALLOC +-static inline void* operator new(size_t s, Firebird::MemoryPool& pool, char* file, int line) { ++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) { ++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) { + 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) { + return pool.allocate(s); + // return pool.calloc(s); + }