X-Git-Url: http://git.pld-linux.org/?p=packages%2FFirebird.git;a=blobdiff_plain;f=Firebird-gcc4.patch;h=7705c3dd77670aaca60bd4a4049cc7767780037f;hp=af20cc0a0a7de433986633b5540c2b4a84aa8afe;hb=a6bbc5c1ce6afda834edee2acf914d92e4d4c925;hpb=14c8a3f86d8caddc9cc6ee61f30471e0794ee5d1 diff --git a/Firebird-gcc4.patch b/Firebird-gcc4.patch index af20cc0..7705c3d 100644 --- a/Firebird-gcc4.patch +++ b/Firebird-gcc4.patch @@ -1,105 +1,36 @@ -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 @@ +--- firebird-1.5.4.4910/src/common/classes/alloc.h.orig 2006-11-05 15:37:52.000000000 +0100 ++++ firebird-1.5.4.4910/src/common/classes/alloc.h 2007-02-17 23:15:18.116389037 +0100 +@@ -241,7 +241,7 @@ + + void operator delete[](void* mem) throw(); + +-#ifdef AIX ++#if defined(AIX) || __GNUC__ >= 4 + #define FB_STATIC_INLINE_NEW inline + #else + #define FB_STATIC_INLINE_NEW static inline +--- firebird-1.5.4.4910/src/burp/burp.cpp.orig 2006-11-05 15:37:49.000000000 +0100 ++++ firebird-1.5.4.4910/src/burp/burp.cpp 2007-02-17 23:46:15.538237476 +0100 +@@ -1596,7 +1596,7 @@ #ifndef WIN_NT signal(SIGPIPE, SIG_IGN); #endif - fil->fil_fd = reinterpret_cast(GBAK_STDOUT_DESC); -+ fil->fil_fd = GBAK_STDOUT_DESC(); ++ fil->fil_fd = static_cast(GBAK_STDOUT_DESC); break; } else -@@ -1724,7 +1724,7 @@ +@@ -1714,7 +1714,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(); ++ fil->fil_fd = static_cast(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) { -+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) { -+STATIC_NEW inline void* operator new[](size_t s, Firebird::MemoryPool& pool) { - return pool.allocate(s); - // return pool.calloc(s); - } -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 +--- Firebird/src/common/config/config.cpp.org 2007-02-27 23:26:11.922623000 +0100 ++++ Firebird/src/common/config/config.cpp 2007-02-27 23:28:52.958623000 +0100 @@ -261,12 +261,12 @@ int Config::getSortMemBlockSize() @@ -222,7 +153,7 @@ diff -ur firebird-1.5.3.4870-orig/src/common/config/config.cpp firebird-1.5.3.48 int Config::getPrioritySwitchDelay() { - int rc = (int) sysConfig.values[KEY_PRIORITY_SWITCH_DELAY]; -+ int rc = (int)(IPTR) sysConfig.values[KEY_PRIORITY_SWITCH_DELAY]; ++ int rc = (int) (IPTR) sysConfig.values[KEY_PRIORITY_SWITCH_DELAY]; if (rc < 1) rc = 1; return rc; @@ -231,7 +162,7 @@ diff -ur firebird-1.5.3.4870-orig/src/common/config/config.cpp firebird-1.5.3.48 int Config::getDeadThreadsCollection() { - int rc = (int) sysConfig.values[KEY_DEAD_THREADS_COLLECTION]; -+ int rc = (int)(IPTR) sysConfig.values[KEY_DEAD_THREADS_COLLECTION]; ++ int rc = (int) (IPTR) sysConfig.values[KEY_DEAD_THREADS_COLLECTION]; if (rc < 1) rc = 1; return rc; @@ -240,7 +171,7 @@ diff -ur firebird-1.5.3.4870-orig/src/common/config/config.cpp firebird-1.5.3.48 int Config::getPriorityBoost() { - int rc = (int) sysConfig.values[KEY_PRIORITY_BOOST]; -+ int rc = (int)(IPTR) sysConfig.values[KEY_PRIORITY_BOOST]; ++ int rc = (int) (IPTR) sysConfig.values[KEY_PRIORITY_BOOST]; if (rc < 1) rc = 1; if (rc > 1000) @@ -283,166 +214,38 @@ diff -ur firebird-1.5.3.4870-orig/src/common/config/config.cpp firebird-1.5.3.48 #else return 0; #endif -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 @@ +--- Firebird/src/jrd/common.h.org 2007-02-27 23:37:36.050623000 +0100 ++++ Firebird/src/jrd/common.h 2007-02-27 23:38:29.062623000 +0100 +@@ -874,8 +874,8 @@ - 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; + #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 - // 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); - STUFF_END; - break; + #ifndef ODS_ALIGNMENT +--- Firebird/src/jrd/gds.cpp.org 2007-02-27 23:31:23.778623000 +0100 ++++ Firebird/src/jrd/gds.cpp 2007-02-27 23:39:16.538623000 +0100 +@@ -2287,7 +2287,7 @@ + return result; + + if (stdio_flag) +- if (!(result = ib_fdopen((int) result, "w+"))) ++ if (!(result = ib_fdopen((int)(IPTR) result, "w+"))) + return (void *)-1; -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 + if (expanded_string) +--- Firebird/src/gpre/cme.cpp.org 2007-02-27 23:39:38.878623000 +0100 ++++ Firebird/src/gpre/cme.cpp 2007-02-27 23:40:09.686623000 +0100 @@ -251,7 +251,7 @@ // ** Begin date/time/timestamp support * case nod_extract: STUFF(blr_extract); - switch ((KWWORDS) (int) node->nod_arg[0]) -+ switch ((KWWORDS) (int)(IPTR) node->nod_arg[1]) ++ switch ((KWWORDS) (int)(IPTR) node->nod_arg[0]) { case KW_YEAR: STUFF(blr_extract_year); @@ -455,131 +258,56 @@ diff -ur firebird-1.5.3.4870-orig/src/gpre/cme.cpp firebird-1.5.3.4870/src/gpre/ CME_get_dtype(node->nod_arg[1], f); switch (f->fld_dtype) { -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 @@ +--- Firebird/src/gpre/c_cxx.cpp.org 2007-02-27 23:40:26.886623000 +0100 ++++ Firebird/src/gpre/c_cxx.cpp 2007-02-27 23:41:05.806623000 +0100 +@@ -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_long1 = (int) init->nod_arg[2]; ++ args.pat_long1 = (int)(IPTR) init->nod_arg[2]; args.pat_value2 = (int) event_list->nod_count; - 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 @@ + + // 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]; ++ ident = (int)(IPTR) event_init->nod_arg[2]; database = (DBB) event_init->nod_arg[3]; } } -@@ -3845,7 +3845,7 @@ - - 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) - { - -- printa(names[COLUMN], TRUE, "%ld", action->act_object); -+ printa(names[COLUMN], TRUE, "%ld", (IPTR) action->act_object); - } - +--- Firebird/src/jrd/sdl.cpp.org 2007-02-27 23:41:38.546623000 +0100 ++++ Firebird/src/jrd/sdl.cpp 2007-02-27 23:41:48.982623000 +0100 +@@ -701,7 +701,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); -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; + /* Is this element within the array bounds? */ +--- Firebird/src/jrd/blb.cpp.org 2007-02-27 23:45:22.954623000 +0100 ++++ Firebird/src/jrd/blb.cpp 2007-02-27 23:45:34.610623000 +0100 +@@ -861,7 +861,7 @@ source = (BID) from_desc->dsc_address; destination = (BID) to_desc->dsc_address; -- id = (USHORT) field->nod_arg[e_fld_id]; + id = (USHORT) (IPTR) field->nod_arg[e_fld_id]; - rpb = &request->req_rpb[(int) 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]]; ++ rpb = &request->req_rpb[(int) (IPTR) field->nod_arg[e_fld_stream]]; relation = rpb->rpb_relation; record = rpb->rpb_record; -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 = (USHORT)(IPTR) node->nod_arg[e_fld_id]; - format = -- CMP_format(tdbb, csb, (USHORT) 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; -@@ -983,9 +983,9 @@ - - sub = node->nod_arg[e_scl_field]; - relation = -- csb->csb_rpt[(USHORT) sub-> -+ csb->csb_rpt[(USHORT)(IPTR) sub-> - nod_arg[e_fld_stream]].csb_relation; -- id = (USHORT) 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 */ +--- Firebird/src/jrd/cmp.cpp.org 2007-02-27 23:45:52.962623000 +0100 ++++ Firebird/src/jrd/cmp.cpp 2007-02-27 23:46:14.266623000 +0100 @@ -1661,7 +1661,7 @@ return; case nod_extract: - if ((ULONG) node->nod_arg[e_extract_part] == blr_extract_second) { -+ if ((ULONG)(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); @@ -588,562 +316,44 @@ diff -ur firebird-1.5.3.4870-orig/src/jrd/cmp.cpp firebird-1.5.3.4870/src/jrd/cm 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]]; ++ *desc = format->fmt_desc[(int) (IPTR) node->nod_arg[e_arg_number]]; return; } -@@ -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 = (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; -@@ -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 = (USHORT)(IPTR) field->fld_source->nod_arg[e_fld_id]; - } - if (remap) - stream = remap[stream]; -@@ -2773,7 +2773,7 @@ - node->nod_type = input->nod_type; - node->nod_count = 0; - -- stream = (USHORT) 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 -@@ -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 = (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 */ -@@ -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); -+ (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; -@@ -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 = (USHORT)(IPTR) input->nod_arg[e_agg_stream]; - assert(stream <= MAX_STREAMS); - new_stream = (*csb)->csb_n_stream++; - assert(new_stream <= MAX_STREAMS); -@@ -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 = (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 */ -@@ -3043,7 +3043,7 @@ - csb_repeat *tail; - JRD_REL relation; - -- stream = (USHORT) 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) ) -@@ -3271,7 +3271,7 @@ - JRD_FLD field; - UCHAR *map, local_map[MAP_LENGTH]; - -- stream = (USHORT) 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 -@@ -3292,7 +3292,7 @@ - if (!(relation = tail->csb_relation) || - !(field = - MET_get_field(relation, -- (USHORT) 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. */ - -@@ -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 = (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]); -+ (USHORT)(IPTR) sub->nod_arg[e_fld_id]); - if (field) - node->nod_arg[e_asgn_missing2] = field->fld_missing_value; - } -@@ -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 = (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; -+ (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; -@@ -3433,7 +3433,7 @@ - break; - - case nod_modify: -- stream = (USHORT) 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); -@@ -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-> -+ (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 = (USHORT)(IPTR) node->nod_arg[e_erase_stream]; - tail = &(*csb)->csb_rpt[stream]; - tail->csb_flags |= csb_erase; - pass1_erase(tdbb, csb, node); -@@ -3463,12 +3463,12 @@ - - case nod_store: - sub = node->nod_arg[e_sto_relation]; -- stream = (USHORT) 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 = (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 = -@@ -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[(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] = -@@ -3523,7 +3523,7 @@ - NOD_T type; - - type = node->nod_type; -- stream = (USHORT) node->nod_arg[0]; -+ stream = (USHORT)(IPTR) node->nod_arg[0]; - - if (!(*csb)->csb_rpt[stream].csb_map) - return node; -@@ -3558,7 +3558,7 @@ - break; - - case nod_cardinality: -- stream = (USHORT) node->nod_arg[e_card_stream]; -+ stream = (USHORT)(IPTR) node->nod_arg[e_card_stream]; - (*csb)->csb_rpt[stream].csb_flags |= csb_compute; - break; - -@@ -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 = (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; -@@ -3693,7 +3693,7 @@ - - parent = relation; - parent_stream = stream; -- new_stream = (USHORT) 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]; - } - } -@@ -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]; -+ (USHORT)(IPTR) (JRD_NOD) (field->fld_source)->nod_arg[e_fld_id]; - else - new_id = id; - } -@@ -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 = (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; -@@ -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 = (USHORT)(IPTR) source->nod_arg[e_rel_stream]; - stream = map[stream]; - view_stream = new_stream; - -@@ -3850,18 +3850,18 @@ - - map = - alloc_map(tdbb, csb, -- (SSHORT) 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] = (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] = - source->nod_arg[e_rel_stream]; - 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 = (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 = -@@ -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 = (USHORT)(IPTR) source->nod_arg[e_rel_stream]; - node->nod_arg[e_mod_org_stream] = (JRD_NOD) (SLONG) map[stream]; - - /* Next, do update stream */ - - map = - alloc_map(tdbb, csb, -- (SSHORT) 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]; - } -@@ -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); -+ (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); -@@ -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 = (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 */ -@@ -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]) { -+ (USHORT)(IPTR) source->nod_arg[e_rel_context]) { - element->csb_alias = (*vcx_ptr)->vcx_context_name; - break; - } -@@ -4319,7 +4319,7 @@ - - for (;;) { - original = node->nod_arg[e_sto_relation]; -- stream = (USHORT) 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; -@@ -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]; -+ (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] = -@@ -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 = (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 = (USHORT)(IPTR) node->nod_arg[e_mod_new_stream]; - csb->csb_rpt[stream].csb_flags |= csb_active; - } - -@@ -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 = (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 = (USHORT)(IPTR) node->nod_arg[e_mod_new_stream]; - csb->csb_rpt[stream].csb_flags &= ~csb_active; - } - -@@ -4836,7 +4836,7 @@ - FMT format; - fmt::fmt_desc_iterator desc; - -- stream = (USHORT) 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(); -@@ -4861,13 +4861,13 @@ - break; - - case nod_erase: -- stream = (USHORT) 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 = (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); -@@ -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 = (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); -@@ -5050,7 +5050,7 @@ - - node = *ptr; - if (node->nod_type == nod_relation) { -- USHORT stream = (USHORT) 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); - } -@@ -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 = (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 = (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); -@@ -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 = (USHORT)(IPTR) node->nod_arg[e_uni_stream]; - format = &csb->csb_rpt[id].csb_format; - - /* Process alternating rse and map blocks */ -@@ -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 = (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); -@@ -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 = (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 -@@ -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 = (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 = (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 = (USHORT)(IPTR) node->nod_arg[e_agg_stream]; - assert(stream <= MAX_STREAMS); - csb->csb_rpt[stream].csb_flags &= ~csb_active; - } -@@ -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 = (USHORT)(IPTR) field->nod_arg[e_fld_id]; - if (id >= format->fmt_count) { - format->fmt_desc.resize(id + 1); - } -@@ -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 == (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 == (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 +--- Firebird/src/jrd/evl.cpp.org 2007-02-27 23:46:46.350623000 +0100 ++++ Firebird/src/jrd/evl.cpp 2007-02-27 23:49:01.206623000 +0100 @@ -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; ++ (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 @@ +@@ -288,7 +288,7 @@ // 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], ++ 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]]; ++ 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; ++ 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 @@ +@@ -851,7 +851,7 @@ case nod_field: { REC record = @@ -1152,32 +362,21 @@ diff -ur firebird-1.5.3.4870-orig/src/jrd/evl.cpp firebird-1.5.3.4870/src/jrd/ev /* 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]; ++ 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 @@ - +@@ -1174,7 +1174,7 @@ switch (node->nod_type) { case nod_gen_id: /* return a 32-bit generator value */ -- impure->vlu_misc.vlu_long = (SLONG) DPM_gen_id(tdbb, + impure->vlu_misc.vlu_long = (SLONG) DPM_gen_id(tdbb, - (SLONG) -+ impure->vlu_misc.vlu_long = (SLONG)(IPTR) DPM_gen_id(tdbb, -+ (SLONG)(IPTR) ++ (SLONG) (IPTR) node->nod_arg [e_gen_id], 0, MOV_get_int64 @@ -1186,7 +385,7 @@ diff -ur firebird-1.5.3.4870-orig/src/jrd/evl.cpp firebird-1.5.3.4870/src/jrd/ev case nod_gen_id2: impure->vlu_misc.vlu_int64 = DPM_gen_id(tdbb, - (SLONG) -+ (SLONG)(IPTR) ++ (SLONG) (IPTR) node->nod_arg[e_gen_id], 0, MOV_get_int64(values[0], @@ -1195,19 +394,16 @@ diff -ur firebird-1.5.3.4870-orig/src/jrd/evl.cpp firebird-1.5.3.4870/src/jrd/ev } - desc->dsc_address = record->rec_data + (int) desc->dsc_address; -+ desc->dsc_address = record->rec_data + (int)(IPTR) 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]; +@@ -1727,7 +1727,7 @@ field = (*ptr)->nod_arg[e_asgn_to]; -- id = (USHORT) field->nod_arg[e_fld_id]; -+ id = (USHORT)(IPTR) 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; ++ request->req_rpb[(int) (IPTR) field->nod_arg[e_fld_stream]].rpb_record; impure = (VLUX) ((SCHAR *) request + from->nod_impure); switch (from->nod_type) { @@ -1220,7 +416,7 @@ diff -ur firebird-1.5.3.4870-orig/src/jrd/evl.cpp firebird-1.5.3.4870/src/jrd/ev relation = rpb->rpb_relation; /* Format dbkey as vector of relation id, record number */ -@@ -4500,7 +4500,7 @@ +@@ -4487,7 +4487,7 @@ request = tdbb->tdbb_request; impure = (VLU) ((SCHAR *) request + node->nod_impure); @@ -1229,47 +425,17 @@ diff -ur firebird-1.5.3.4870-orig/src/jrd/evl.cpp firebird-1.5.3.4870/src/jrd/ev /* 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 @@ - +--- Firebird/src/jrd/exe.cpp.org 2007-02-27 23:49:26.026623000 +0100 ++++ Firebird/src/jrd/exe.cpp 2007-02-27 23:50:30.090623000 +0100 +@@ -376,7 +376,7 @@ if (to->nod_type == nod_field) { -- SSHORT id = (USHORT) to->nod_arg[e_fld_id]; + SSHORT id = (USHORT) (IPTR) 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) @@ -1288,33 +454,6 @@ diff -ur firebird-1.5.3.4870-orig/src/jrd/exe.cpp firebird-1.5.3.4870/src/jrd/ex 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; @@ -1333,58 +472,14 @@ diff -ur firebird-1.5.3.4870-orig/src/jrd/exe.cpp firebird-1.5.3.4870/src/jrd/ex 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; - +--- Firebird/src/jrd/ext.cpp.org 2007-02-27 23:50:53.198623000 +0100 ++++ Firebird/src/jrd/ext.cpp 2007-02-27 23:51:19.166623000 +0100 @@ -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; ++ desc.dsc_address = record->rec_data + (int) (IPTR) desc.dsc_address; if (!MOV_compare(&literal->lit_desc, &desc)) continue; } @@ -1393,54 +488,24 @@ diff -ur firebird-1.5.3.4870-orig/src/jrd/ext.cpp firebird-1.5.3.4870/src/jrd/ex TEST_NULL(record, i)) { - p = record->rec_data + (int) desc_ptr->dsc_address; -+ p = record->rec_data + (int)(IPTR) 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; +--- Firebird/src/jrd/idx.cpp.org 2007-02-27 23:51:42.758623000 +0100 ++++ Firebird/src/jrd/idx.cpp 2007-02-27 23:51:52.130623000 +0100 +@@ -1058,7 +1058,7 @@ + (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]); ++ (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]; + (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 @@ +--- Firebird/src/jrd/inf.cpp.org 2007-02-27 23:52:13.402623000 +0100 ++++ Firebird/src/jrd/inf.cpp 2007-02-27 23:52:25.830623000 +0100 +@@ -973,7 +973,7 @@ node = request->req_message; if (item == gds_info_message_number) length = @@ -1449,575 +514,296 @@ diff -ur firebird-1.5.3.4870-orig/src/jrd/inf.cpp firebird-1.5.3.4870/src/jrd/in 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) +--- Firebird/src/jrd/jrd.cpp.org 2007-02-27 23:52:47.034623000 +0100 ++++ Firebird/src/jrd/jrd.cpp 2007-02-27 23:53:44.414623000 +0100 +@@ -3877,9 +3877,9 @@ + { + if ( (node = csb->csb_rpt[i].csb_message) ) { -- 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]; +- 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; + } } - else if (node->nod_type == nod_rse) { - compute_rse_streams(csb, (RSE) node, beds); -@@ -895,7 +895,7 @@ +--- Firebird/src/jrd/jrd.h.org 2007-02-27 23:54:08.442623000 +0100 ++++ Firebird/src/jrd/jrd.h 2007-02-27 23:54:30.994623000 +0100 +@@ -1050,8 +1050,10 @@ - /* 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: + #if !defined(REQUESTER) -- n = (USHORT) node->nod_arg[e_fld_stream]; -+ n = (USHORT)(IPTR) node->nod_arg[e_fld_stream]; ++extern "C" { + extern int debug; + extern IHNDL internal_db_handles; ++} - if (allowOnlyCurrentStream) { - if (n != stream) { -@@ -1713,7 +1713,7 @@ + #endif /* REQUESTER */ - case nod_dbkey: +--- Firebird/src/jrd/jrn.cpp.org 2007-02-27 23:55:28.466623000 +0100 ++++ Firebird/src/jrd/jrn.cpp 2007-02-27 23:57:02.762623000 +0100 +@@ -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; + } -- n = (USHORT) node->nod_arg[0]; -+ n = (USHORT)(IPTR) node->nod_arg[0]; +- if (!connect((int) journal->jrn_channel, (sockaddr*)&address, sizeof(address))) ++ if (!connect((int)(IPTR) journal->jrn_channel, (sockaddr*)&address, sizeof(address))) + break; - if (allowOnlyCurrentStream) { - if (n != stream) { -@@ -1784,7 +1784,7 @@ + sleep(3); - 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; + if (loop < 16) { +- close((int) journal->jrn_channel); ++ close((int)(IPTR) journal->jrn_channel); + continue; } - } -@@ -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; + 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); } -@@ -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 @@ + #endif - 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 @@ +@@ -939,7 +939,7 @@ + if (retry) + { + #ifdef BSD_SOCKETS +- close((int) journal->jrn_channel); ++ close((int)(IPTR) journal->jrn_channel); + #endif - 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]; - } + #ifdef WIN_NT +@@ -1056,7 +1056,7 @@ + with us, so keep trying until successful. */ - // 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)]; - } - } + 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)); -@@ -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]; - } - } + if (l < 0) { +@@ -1095,7 +1095,7 @@ + **************************************/ -@@ -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; + #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. */ -- 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 - ) + 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) { +--- Firebird/src/jrd/nav.cpp.org 2007-02-27 23:57:33.730623000 +0100 ++++ Firebird/src/jrd/nav.cpp 2007-02-27 23:59:12.262623000 +0100 +@@ -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 -@@ -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; + } +@@ -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); + } - 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 */ +@@ -1404,7 +1404,7 @@ + tdbb = GET_THREAD_DATA; - 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; + 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); - rsb = rsb->rsb_arg[0]; - } -@@ -2914,7 +2914,7 @@ + /* the outer loop goes through all the sibling pages +@@ -1619,7 +1619,7 @@ + tdbb = GET_THREAD_DATA; 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; + idx = +- (IDX *) ((SCHAR *) impure + (SLONG) rsb->rsb_arg[RSB_NAV_idx_offset]); ++ (IDX *) ((SCHAR *) impure + (SLONG)(IPTR) rsb->rsb_arg[RSB_NAV_idx_offset]); - case set_statistics: -- QLI_statistics = (USHORT) value; -+ QLI_statistics = (USHORT)(IPTR) value; - break; + BOOLEAN result; - case set_columns: -- QLI_name_columns = QLI_columns = (USHORT) value; -+ QLI_name_columns = QLI_columns = (USHORT)(IPTR) value; - break; +@@ -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)); +@@ -1770,7 +1770,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); + } - case set_lines: -- QLI_lines = (USHORT) value; -+ QLI_lines = (USHORT)(IPTR) value; - break; +@@ -1778,7 +1778,7 @@ + impure->irsb_nav_upper_length = upper.key_length; + MOVE_FAST(upper.key_data, + (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_length); + } - case set_semi: -- QLI_semi = (USHORT) value; -+ QLI_semi = (USHORT)(IPTR) value; - break; +@@ -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) +--- Firebird/src/jrd/rse.cpp.org 2007-02-28 00:00:03.858623000 +0100 ++++ Firebird/src/jrd/rse.cpp 2007-02-28 00:01:21.818623000 +0100 +@@ -2151,7 +2151,7 @@ + } - case set_echo: -- QLI_echo = (USHORT) value; -+ QLI_echo = (USHORT)(IPTR) value; - break; + 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; - case set_form: -@@ -399,7 +399,7 @@ - break; +@@ -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); - case set_count: -- QLI_count = (USHORT) value; -+ QLI_count = (USHORT)(IPTR) value; - break; +@@ -3817,7 +3817,7 @@ + if (!sfb_->sfb_file_name) { + TEXT file_name[128]; - 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; +- 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); +--- Firebird/src/jrd/sort.cpp.org 2007-02-28 00:01:47.478623000 +0100 ++++ Firebird/src/jrd/sort.cpp 2007-02-28 00:02:06.390623000 +0100 +@@ -1787,7 +1787,7 @@ + /* Create a scratch file */ -- p = buffer + (int) desc->dsc_address; -+ p = buffer + (int) (IPTR)desc->dsc_address; + 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); - 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 + /* allocate the file name even if the file is not open, +--- Firebird/src/dsql/ddl.cpp.org 2007-02-28 00:02:23.650623000 +0100 ++++ Firebird/src/dsql/ddl.cpp 2007-02-28 00:04:37.514623000 +0100 @@ -1126,12 +1126,12 @@ if (constant) { @@ -2038,7 +824,7 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/ddl.cpp firebird-1.5.3.4870/src/dsql switch (element->nod_type) { case nod_file_length: - start = (SLONG) (element->nod_arg[0]) + 1; -+ start = (SLONG) (IPTR) (element->nod_arg[0]) + 1; ++ start = (SLONG)(IPTR) (element->nod_arg[0]) + 1; break; default: @@ -2047,28 +833,28 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/ddl.cpp firebird-1.5.3.4870/src/dsql 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]); ++ 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]); ++ 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]); ++ 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]); ++ temp_short = (SSHORT)(SLONG)(IPTR) (element->nod_arg[0]); request->append_ushort_with_length(temp_short); break; @@ -2077,12 +863,12 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/ddl.cpp firebird-1.5.3.4870/src/dsql 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]); ++ 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]); ++ SLONG hrange = (SLONG)(IPTR) (element->nod_arg[0]); request->append_ulong_with_length(hrange); request->append_uchar(gds_dyn_end); if (lrange >= hrange) @@ -2091,10 +877,10 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/ddl.cpp firebird-1.5.3.4870/src/dsql ((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])); ++ (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])); ++ (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, @@ -2103,19 +889,19 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/ddl.cpp firebird-1.5.3.4870/src/dsql } - 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_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])); ++ (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])); ++ (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]; ++ SLONG length = (SLONG)(IPTR) ptr[e_shadow_length]; request->append_file_length(length); request->append_uchar(gds_dyn_end); @@ -2124,18 +910,18 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/ddl.cpp firebird-1.5.3.4870/src/dsql 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]); ++ (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]); ++ (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]; ++ 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); @@ -2144,7 +930,7 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/ddl.cpp firebird-1.5.3.4870/src/dsql { 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]; ++ 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); @@ -2153,7 +939,7 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/ddl.cpp firebird-1.5.3.4870/src/dsql /* 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) && ++ 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 || @@ -2162,25 +948,29 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/ddl.cpp firebird-1.5.3.4870/src/dsql - position = (SSHORT)(SLONG) (ret_val_ptr[1]->nod_arg[0]); -+ position = (SSHORT)(SLONG) (IPTR) (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 @@ +@@ -3024,10 +3024,10 @@ 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); ++ 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)); +- (SSHORT)(SLONG) ((free_it ? -1 : 1) * FUN_blob_struct)); ++ (SSHORT)(SLONG)(IPTR) ((free_it ? -1 : 1) * FUN_blob_struct)); + /* if we have the free_it set then the blob has + to be freed on return */ + } @@ -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])); ++ (SSHORT)(SLONG)(IPTR) (ret_val_ptr[1]->nod_arg[0])); } request->append_cstring(gds_dyn_function_name, udf_name); @@ -2189,7 +979,7 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/ddl.cpp firebird-1.5.3.4870/src/dsql 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]); ++ 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) { @@ -2198,7 +988,7 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/ddl.cpp firebird-1.5.3.4870/src/dsql { request->append_number(gds_dyn_trg_sequence, - (SSHORT)(SLONG) (constant ? constant->nod_arg[0] : 0)); -+ (SSHORT)(SLONG) (IPTR) (constant ? constant->nod_arg[0] : 0)); ++ (SSHORT)(SLONG)(IPTR) (constant ? constant->nod_arg[0] : 0)); } constant = node->nod_arg[e_cnstr_type]; @@ -2214,7 +1004,7 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/ddl.cpp firebird-1.5.3.4870/src/dsql case nod_del_shadow: request->append_number(gds_dyn_delete_shadow, - (SSHORT)(SLONG) (node->nod_arg[0])); -+ (SSHORT)(SLONG) (IPTR) (node->nod_arg[0])); ++ (SSHORT)(SLONG)(IPTR) (node->nod_arg[0])); request->append_uchar(gds_dyn_end); break; @@ -2253,21 +1043,20 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/ddl.cpp firebird-1.5.3.4870/src/dsql /* 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; ++ 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 +--- Firebird/src/dsql/dsql.cpp.org 2007-02-28 00:04:57.930623000 +0100 ++++ Firebird/src/dsql/dsql.cpp 2007-02-28 00:06:17.478623000 +0100 @@ -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; ++ (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), @@ -2276,7 +1065,7 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/dsql.cpp firebird-1.5.3.4870/src/dsq buffer = reinterpret_cast( - dsql_msg + (SLONG) parameter->par_user_desc.dsc_address); -+ dsql_msg + (SLONG) (IPTR) 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), @@ -2285,7 +1074,7 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/dsql.cpp firebird-1.5.3.4870/src/dsq if (node->nod_type == nod_constant) - return (SSHORT)(SLONG) node->nod_arg[0]; -+ return (SSHORT)(SLONG) (IPTR) 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) @@ -2294,7 +1083,7 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/dsql.cpp firebird-1.5.3.4870/src/dsq 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; ++ USHORT length = (SLONG)(IPTR) desc.dsc_address + desc.dsc_length; if (length > msg_length) break; if (!desc.dsc_dtype) @@ -2303,7 +1092,7 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/dsql.cpp firebird-1.5.3.4870/src/dsq 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); ++ USHORT null_offset = (USHORT)(ULONG)(IPTR) (null->par_user_desc.dsc_address); length = null_offset + sizeof(SSHORT); if (length > msg_length) break; @@ -2312,19 +1101,18 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/dsql.cpp firebird-1.5.3.4870/src/dsq } - desc.dsc_address = dsql_msg + (SLONG) desc.dsc_address; -+ desc.dsc_address = dsql_msg + (SLONG) (IPTR) 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 +--- Firebird/src/dsql/gen.cpp.org 2007-02-28 00:06:39.246623000 +0100 ++++ Firebird/src/dsql/gen.cpp 2007-02-28 00:08:32.954623000 +0100 @@ -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; ++ message->msg_buffer + (SLONG)(IPTR) parameter->par_desc.dsc_address; } @@ -2333,7 +1121,7 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/gen.cpp firebird-1.5.3.4870/src/dsql 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((int)(SLONG)(IPTR) node->nod_arg[e_exec_into_number]); } STUFF(blr_exec_into); temp = node->nod_arg[e_exec_into_list]; @@ -2342,7 +1130,7 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/gen.cpp firebird-1.5.3.4870/src/dsql 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]); ++ STUFF((int)(SLONG)(IPTR) node->nod_arg[e_label_number]); return; case nod_breakleave: @@ -2357,7 +1145,7 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/gen.cpp firebird-1.5.3.4870/src/dsql 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]); ++ STUFF((int)(SLONG)(IPTR) node->nod_arg[e_abrt_number]); return; case nod_start_savepoint: @@ -2366,7 +1154,7 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/gen.cpp firebird-1.5.3.4870/src/dsql 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((int)(SLONG)(IPTR) node->nod_arg[e_while_number]); STUFF(blr_loop); STUFF(blr_begin); STUFF(blr_if); @@ -2374,7 +1162,7 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/gen.cpp firebird-1.5.3.4870/src/dsql 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((int)(SLONG)(IPTR) node->nod_arg[e_while_number]); STUFF(blr_end); return; @@ -2383,7 +1171,7 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/gen.cpp firebird-1.5.3.4870/src/dsql case nod_sqlcode: STUFF(blr_sql_code); - STUFF_WORD((USHORT)(ULONG) node->nod_arg[0]); -+ STUFF_WORD((USHORT)(ULONG) (IPTR) node->nod_arg[0]); ++ STUFF_WORD((USHORT)(ULONG)(IPTR) node->nod_arg[0]); return; case nod_gdscode: @@ -2392,7 +1180,7 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/gen.cpp firebird-1.5.3.4870/src/dsql 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]); ++ STUFF ((int)(IPTR) for_select->nod_arg [e_flp_number]); } /* Generate FOR loop */ @@ -2401,13 +1189,12 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/gen.cpp firebird-1.5.3.4870/src/dsql 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]) { ++ 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 +--- Firebird/src/dsql/parse.y.org 2007-02-28 00:09:38.346623000 +0100 ++++ Firebird/src/dsql/parse.y 2007-02-28 00:15:32.978623000 +0100 @@ -551,7 +551,7 @@ | set | update @@ -2417,15 +1204,6 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/parse.y firebird-1.5.3.4870/src/dsql $$ = 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 @@ ; @@ -2434,7 +1212,7 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/parse.y firebird-1.5.3.4870/src/dsql + { lex.g_file->fil_length = (SLONG)(IPTR) $3; } /* | RAW_PARTITIONS equals pos_short_integer - { lex.g_file->fil_partitions = (SSHORT) $3; + { lex.g_file->fil_partitions = (SSHORT) (IPTR) $3; @@ -1178,9 +1178,9 @@ ; @@ -2456,83 +1234,6 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/parse.y firebird-1.5.3.4870/src/dsql $$ = 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 ')' @@ -2555,12 +1256,7 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/parse.y firebird-1.5.3.4870/src/dsql { 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; +@@ -2483,13 +2483,13 @@ } | '(' signed_long_integer ',' signed_long_integer ')' { @@ -2586,17 +1282,6 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/parse.y firebird-1.5.3.4870/src/dsql { 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 @@ -2606,15 +1291,6 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/parse.y firebird-1.5.3.4870/src/dsql { 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 @@ -2679,25 +1355,48 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/parse.y firebird-1.5.3.4870/src/dsql MAKE_constant ((STR) ($7), CONSTANT_SLONG)); } | KW_UPPER '(' value ')' { $$ = make_node (nod_upcase, 1, $3); } -@@ -4960,7 +4960,7 @@ +--- Firebird/src/remote/interface.cpp.org 2007-02-28 00:17:46.438623000 +0100 ++++ Firebird/src/remote/interface.cpp 2007-02-28 00:18:18.002623000 +0100 +@@ -3230,7 +3230,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; - 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; + event->p_event_rid = rem_event->rvnt_id; +@@ -6225,8 +6225,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); + } + +--- Firebird/src/remote/protocol.cpp.org 2007-02-28 00:18:40.858623000 +0100 ++++ Firebird/src/remote/protocol.cpp 2007-02-28 00:19:05.766623000 +0100 +@@ -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: +--- Firebird/src/dsql/pass1.cpp 2005-06-16 11:44:39.000000000 +0200 ++++ Firebird/src/dsql/pass1.cpp 2007-02-28 00:17:34.114623000 +0100 +@@ -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 @@ @@ -2718,15 +1417,18 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/pass1.cpp firebird-1.5.3.4870/src/ds if ((position < 1) || (position > (ULONG) slist_node->nod_count)) { ERRD_post(gds_sqlerr, gds_arg_number, (SLONG) - 104, -@@ -4819,7 +4819,7 @@ +@@ -4819,9 +4819,9 @@ } 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)) { +- (position > (ULONG) s_list->nod_count)) { ++ (position > (ULONG)(IPTR) s_list->nod_count)) { ERRD_post(gds_sqlerr, gds_arg_number, (SLONG) - 104, + gds_arg_gds, gds_dsql_column_pos_err, + gds_arg_string, "ORDER BY", 0); @@ -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 */ @@ -2736,528 +1438,23 @@ diff -Naur firebird-1.5.3.4870.old/src/dsql/pass1.cpp firebird-1.5.3.4870/src/ds 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/dpm.epp.org 2007-02-28 00:25:04.202623000 +0100 ++++ Firebird/src/jrd/dpm.epp 2007-02-28 00:27:43.810623000 +0100 +@@ -2124,7 +2124,7 @@ + CCH_precedence(tdbb, &rpb->rpb_window, -rpb->rpb_transaction); + CCH_MARK(tdbb, &rpb->rpb_window); + page = (DPG) rpb->rpb_window.win_buffer; +- size = SQZ_length(tdbb, (SCHAR*) rpb->rpb_address, (int) rpb->rpb_length, &dcc); ++ size = SQZ_length(tdbb, (SCHAR*) rpb->rpb_address, (int)(IPTR) rpb->rpb_length, &dcc); + + /* It is critical that the record be padded, if necessary, to the length of + a fragmented record header. Compute the amount of fill required. */ +@@ -2753,7 +2753,7 @@ + rpb->rpb_page = rpb->rpb_window.win_page; + rpb->rpb_line = slot; + rpb->rpb_number = +- (SLONG) page->dpg_sequence * dbb->dbb_max_records + slot; ++ (SLONG)(IPTR) page->dpg_sequence * dbb->dbb_max_records + slot; + + if (record) + LLS_PUSH((BLK) rpb->rpb_page, &record->rec_precedence);