-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<DESC>(GBAK_STDOUT_DESC);
-+ fil->fil_fd = GBAK_STDOUT_DESC();
++ fil->fil_fd = static_cast<DESC>(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<DESC>(GBAK_STDIN_DESC);
-+ fil->fil_fd = GBAK_STDIN_DESC();
++ fil->fil_fd = static_cast<DESC>(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 <windows.h>
--#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()
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;
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;
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)
#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);
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);
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 =
/* 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
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],
}
- 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)
{
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);
/* 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)
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;
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;
}
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 =
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)
{
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:
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;
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)
((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,
}
- 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);
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);
{
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);
/* 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 ||
- 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);
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) {
{
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];
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;
/* 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),
buffer =
reinterpret_cast<SCHAR*>(
- 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),
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)
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)
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;
}
- 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;
}
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];
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:
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:
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);
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;
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:
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 */
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
$$ = 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 @@
;
+ { 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 @@
;
$$ = 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 ')'
{
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 ')'
{
{
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
{
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
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 @@
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 */
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);