+diff -urNad firebird2-1.5.3.4870~/src/jrd/inf.cpp firebird2-1.5.3.4870/src/jrd/inf.cpp
+--- firebird2-1.5.3.4870~/src/jrd/inf.cpp 2003-06-08 16:13:23.000000000 +0300
++++ firebird2-1.5.3.4870/src/jrd/inf.cpp 2006-02-01 23:07:23.000000000 +0200
+@@ -972,7 +972,7 @@
+ node = request->req_message;
+ if (item == gds_info_message_number)
+ length =
+- INF_convert((SLONG) node->nod_arg[e_msg_number],
++ INF_convert((SLONG)(IPTR) node->nod_arg[e_msg_number],
+ buffer_ptr);
+ else {
+ format = (FMT) node->nod_arg[e_msg_format];
+diff -urNad firebird2-1.5.3.4870~/src/jrd/met.epp firebird2-1.5.3.4870/src/jrd/met.epp
+--- firebird2-1.5.3.4870~/src/jrd/met.epp 2006-02-01 23:07:02.000000000 +0200
++++ firebird2-1.5.3.4870/src/jrd/met.epp 2006-02-01 23:07:04.000000000 +0200
+@@ -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 -urNad firebird2-1.5.3.4870~/src/jrd/sdl.cpp firebird2-1.5.3.4870/src/jrd/sdl.cpp
+--- firebird2-1.5.3.4870~/src/jrd/sdl.cpp 2006-02-01 23:07:03.000000000 +0200
++++ firebird2-1.5.3.4870/src/jrd/sdl.cpp 2006-02-01 23:07:04.000000000 +0200
+@@ -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? */
+
+--- Firebird.org/src/jrd/jrd.cpp~ 2004-11-17 12:41:16.000000000 +0100
++++ Firebird/src/jrd/jrd.cpp 2006-03-28 18:47:32.722559750 +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;
+ }
+ }
+--- Firebird.org/src/jrd/jrn.cpp.org 2006-03-28 18:52:47.582237250 +0200
++++ Firebird/src/jrd/jrn.cpp 2006-03-28 18:54:06.667179750 +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) {
+--- Firebird.org/src/jrd/nav.cpp.org 2006-03-28 19:04:53.447601000 +0200
++++ Firebird/src/jrd/nav.cpp 2006-03-28 19:08:20.452538000 +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));
+@@ -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);
+ }
+
+@@ -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);
+ }
+
+@@ -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.org/src/jrd/opt.cpp.org 2006-03-28 19:12:44.949068000 +0200
++++ Firebird/src/jrd/opt.cpp 2006-03-28 19:21:54.587418250 +0200