+--- firebird-1.5.2.4731/src/jrd/evl.cpp.orig 2004-10-12 17:34:39.000000000 +0200
++++ firebird-1.5.2.4731/src/jrd/evl.cpp 2005-12-24 13:31:35.388159752 +0100
+@@ -289,7 +289,7 @@
+ // All seem to work fine.
+ record =
+ request->req_rpb[(int) node->nod_arg[e_fld_stream]].rpb_record;
+- EVL_field(0, record, (USHORT) node->nod_arg[e_fld_id],
++ EVL_field(0, record, (USHORT)(size_t) node->nod_arg[e_fld_id],
+ &impure->vlu_desc);
+ if (!impure->vlu_desc.dsc_address)
+ ERR_post(gds_read_only_field, 0);
+@@ -359,7 +359,7 @@
+ impure = (INV) ((SCHAR *) tdbb->tdbb_request + node->nod_impure);
+ SBM_reset(&impure->inv_bitmap);
+ desc = EVL_expr(tdbb, node->nod_arg[0]);
+- id = 1 + 2 * (USHORT) node->nod_arg[1];
++ id = 1 + 2 * (USHORT)(size_t) node->nod_arg[1];
+ numbers = desc->dsc_address;
+ numbers += id * sizeof(SLONG);
+ MOVE_FAST(numbers, &rel_dbkey, sizeof(SLONG));
+@@ -856,9 +856,9 @@
+ * the relation block is referenced.
+ * Reference: Bug 10116, 10424
+ */
+- if (!EVL_field(request->req_rpb[(USHORT) node->nod_arg[e_fld_stream]].rpb_relation,
++ if (!EVL_field(request->req_rpb[(USHORT)(size_t) node->nod_arg[e_fld_stream]].rpb_relation,
+ record,
+- (USHORT) node->nod_arg[e_fld_id],
++ (USHORT)(size_t) node->nod_arg[e_fld_id],
+ &impure->vlu_desc))
+ {
+ request->req_flags |= req_null;
+@@ -1725,7 +1725,7 @@
+ {
+ from = (*ptr)->nod_arg[e_asgn_from];
+ field = (*ptr)->nod_arg[e_asgn_to];
+- id = (USHORT) field->nod_arg[e_fld_id];
++ id = (USHORT)(size_t) field->nod_arg[e_fld_id];
+ record =
+ request->req_rpb[(int) field->nod_arg[e_fld_stream]].rpb_record;
+ impure = (VLUX) ((SCHAR *) request + from->nod_impure);
+--- firebird-1.5.2.4731/src/jrd/exe.cpp.orig 2004-11-06 07:07:51.000000000 +0100
++++ firebird-1.5.2.4731/src/jrd/exe.cpp 2005-12-24 13:33:42.787792064 +0100
+@@ -375,7 +375,7 @@
+
+ if (to->nod_type == nod_field)
+ {
+- SSHORT id = (USHORT) to->nod_arg[e_fld_id];
++ SSHORT id = (USHORT)(size_t) to->nod_arg[e_fld_id];
+ REC record = request->req_rpb[(int) to->nod_arg[e_fld_stream]].rpb_record;
+ if (null) {
+ SET_NULL(record, id);
+@@ -639,7 +639,7 @@
+ message = request->req_message;
+ format = (FMT) message->nod_arg[e_msg_format];
+
+- if (msg != (USHORT) message->nod_arg[e_msg_number])
++ if (msg != (USHORT)(size_t) message->nod_arg[e_msg_number])
+ ERR_post(gds_req_sync, 0);
+
+ if (length != format->fmt_length)
+@@ -788,7 +788,7 @@
+ for (ptr = node->nod_arg, end = ptr + node->nod_count; ptr < end;
+ ptr++) {
+ message = (*ptr)->nod_arg[e_send_message];
+- if ((USHORT) message->nod_arg[e_msg_number] == msg) {
++ if ((USHORT)(size_t) message->nod_arg[e_msg_number] == msg) {
+ request->req_next = *ptr;
+ break;
+ }
+@@ -798,7 +798,7 @@
+
+ format = (FMT) message->nod_arg[e_msg_format];
+
+- if (msg != (USHORT) message->nod_arg[e_msg_number])
++ if (msg != (USHORT)(size_t) message->nod_arg[e_msg_number])
+ ERR_post(gds_req_sync, 0);
+
+ if (length != format->fmt_length)
+@@ -2016,7 +2016,7 @@
+ case jrd_req::req_evaluate:
+ if (transaction != dbb->dbb_sys_trans) {
+
+- UCHAR operation = (UCHAR) node->nod_arg[e_sav_operation];
++ UCHAR operation = (UCHAR)(size_t) node->nod_arg[e_sav_operation];
+ TEXT * node_savepoint_name = (TEXT*) node->nod_arg[e_sav_name];
+
+ // Skip the savepoint created by EXE_start
+@@ -2329,7 +2329,7 @@
+ break;
+
+ case jrd_req::req_unwind:
+- if ((request->req_label == (USHORT) node->nod_arg[e_lbl_label]) &&
++ if ((request->req_label == (USHORT)(size_t) node->nod_arg[e_lbl_label]) &&
+ (request->req_flags & (req_leave | req_error_handler))) {
+ request->req_flags &= ~req_leave;
+ request->req_operation = jrd_req::req_return;
+@@ -2343,7 +2343,7 @@
+ case nod_leave:
+ request->req_flags |= req_leave;
+ request->req_operation = jrd_req::req_unwind;
+- request->req_label = (USHORT) node->nod_arg[0];
++ request->req_label = (USHORT)(size_t) node->nod_arg[0];
+ node = node->nod_parent;
+ break;
+
+@@ -2795,11 +2795,11 @@
+ transaction = request->req_transaction;
+ impure = (STA) ((SCHAR *) request + node->nod_impure);
+
+- org_stream = (USHORT) node->nod_arg[e_mod_org_stream];
++ org_stream = (USHORT)(size_t) node->nod_arg[e_mod_org_stream];
+ org_rpb = &request->req_rpb[org_stream];
+ relation = org_rpb->rpb_relation;
+
+- new_stream = (USHORT) node->nod_arg[e_mod_new_stream];
++ new_stream = (USHORT)(size_t) node->nod_arg[e_mod_new_stream];
+ new_rpb = &request->req_rpb[new_stream];
+
+ #ifdef PC_ENGINE
+@@ -3796,7 +3796,7 @@
+ JRD_REQ request = tdbb->tdbb_request;
+ JRD_TRA transaction = request->req_transaction;
+ STA impure = (STA) ((SCHAR *) request + node->nod_impure);
+- SSHORT stream = (USHORT) node->nod_arg[e_sto_relation]->nod_arg[e_rel_stream];
++ SSHORT stream = (USHORT)(size_t) node->nod_arg[e_sto_relation]->nod_arg[e_rel_stream];
+ RPB* rpb = &request->req_rpb[stream];
+ JRD_REL relation = rpb->rpb_relation;
+
+@@ -4202,8 +4202,8 @@
+
+ if (node->nod_type == nod_field)
+ {
+- stream = (USHORT) node->nod_arg[e_fld_stream];
+- id = (USHORT) node->nod_arg[e_fld_id];
++ stream = (USHORT)(size_t) node->nod_arg[e_fld_stream];
++ id = (USHORT)(size_t) node->nod_arg[e_fld_id];
+ relation = request->req_rpb[stream].rpb_relation;
+
+ if ((vector = relation->rel_fields) &&
+--- firebird-1.5.2.4731/src/jrd/ext.cpp.orig 2003-06-16 17:42:58.000000000 +0200
++++ firebird-1.5.2.4731/src/jrd/ext.cpp 2005-12-24 13:34:26.333172160 +0100
+@@ -266,7 +266,7 @@
+ record = rpb->rpb_record;
+ format = record->rec_format;
+
+- offset = (SSHORT) format->fmt_desc[0].dsc_address;
++ offset = (SSHORT)(size_t) format->fmt_desc[0].dsc_address;
+ p = record->rec_data + offset;
+ l = record->rec_length - offset;
+
+@@ -528,7 +528,7 @@
+ }
+ }
+
+- offset = (USHORT) format->fmt_desc[0].dsc_address;
++ offset = (USHORT)(size_t) format->fmt_desc[0].dsc_address;
+ p = record->rec_data + offset;
+ l = record->rec_length - offset;
+
+--- firebird-1.5.2.4731/src/jrd/idx.cpp.orig 2004-09-15 00:01:50.000000000 +0200
++++ firebird-1.5.2.4731/src/jrd/idx.cpp 2005-12-24 13:35:08.531757000 +0100
+@@ -1051,12 +1051,12 @@
+ index_number < idx->idx_foreign_primaries->count();
+ index_number++) {
+ if (idx->idx_id !=
+- (UCHAR) (*idx->idx_foreign_primaries)[index_number]) continue;
++ (UCHAR)(size_t) (*idx->idx_foreign_primaries)[index_number]) continue;
+ partner_relation =
+ MET_relation(tdbb,
+ (int) (*idx->idx_foreign_relations)[index_number]);
+ index_id =
+- (USHORT) (*idx->idx_foreign_indexes)[index_number];
++ (USHORT)(size_t) (*idx->idx_foreign_indexes)[index_number];
+ if ( (result =
+ check_partner_index(tdbb, relation, record, transaction, idx,
+ partner_relation, index_id)) )
+--- firebird-1.5.2.4731/src/jrd/opt.cpp.orig 2004-11-27 16:57:53.000000000 +0100
++++ firebird-1.5.2.4731/src/jrd/opt.cpp 2005-12-24 13:42:07.610047416 +0100
+@@ -380,7 +380,7 @@
+
+ if (node->nod_type != nod_rse)
+ {
+- stream = (USHORT) node->nod_arg[STREAM_INDEX(node)];
++ stream = (USHORT)(size_t) node->nod_arg[STREAM_INDEX(node)];
+ assert(stream <= MAX_UCHAR);
+ assert(beds[0] < MAX_STREAMS && beds[0] < MAX_UCHAR);
+ beds[++beds[0]] = (UCHAR) stream;
+@@ -400,7 +400,7 @@
+ (USHORT) (key_streams[0] - i));
+ assert(local_streams[0] < MAX_STREAMS && local_streams[0] < MAX_UCHAR);
+ local_streams[++local_streams[0]] =
+- (UCHAR) node->nod_arg[e_uni_stream];
++ (UCHAR)(size_t) node->nod_arg[e_uni_stream];
+ }
+ else if (node->nod_type == nod_aggregate) {
+ assert((int)node->nod_arg[e_agg_stream] <= MAX_STREAMS);
+@@ -408,13 +408,13 @@
+ rsb = gen_aggregate(tdbb, opt_, node);
+ assert(local_streams[0] < MAX_STREAMS && local_streams[0] < MAX_UCHAR);
+ local_streams[++local_streams[0]] =
+- (UCHAR) node->nod_arg[e_agg_stream];
++ (UCHAR)(size_t) node->nod_arg[e_agg_stream];
+ }
+ else if (node->nod_type == nod_procedure) {
+ rsb = gen_procedure(tdbb, opt_, node);
+ assert(local_streams[0] < MAX_STREAMS && local_streams[0] < MAX_UCHAR);
+ local_streams[++local_streams[0]] =
+- (UCHAR) node->nod_arg[e_prc_stream];
++ (UCHAR)(size_t) node->nod_arg[e_prc_stream];
+ }
+ else if (node->nod_type == nod_rse) {
+ compute_rse_streams(csb, (RSE) node, beds);
+@@ -895,7 +895,7 @@
+
+ /* Make sure we have the correct stream */
+
+- if ((USHORT) dbkey->nod_arg[0] != stream)
++ if ((USHORT)(size_t) dbkey->nod_arg[0] != stream)
+ return NULL;
+
+ /* If this is a dbkey for the appropriate stream, it's invertable */
+@@ -1687,7 +1687,7 @@
+ switch (node->nod_type) {
+ case nod_field:
+
+- n = (USHORT) node->nod_arg[e_fld_stream];
++ n = (USHORT)(size_t) node->nod_arg[e_fld_stream];
+
+ if (allowOnlyCurrentStream) {
+ if (n != stream) {
+@@ -1713,7 +1713,7 @@
+
+ case nod_dbkey:
+
+- n = (USHORT) node->nod_arg[0];
++ n = (USHORT)(size_t) node->nod_arg[0];
+
+ if (allowOnlyCurrentStream) {
+ if (n != stream) {
+@@ -1784,7 +1784,7 @@
+
+ for (ptr = rse->rse_relation, end = ptr + rse->rse_count; ptr < end; ptr++) {
+ if ((*ptr)->nod_type != nod_rse) {
+- n = (USHORT) (*ptr)->nod_arg[STREAM_INDEX((*ptr))];
++ n = (USHORT)(size_t) (*ptr)->nod_arg[STREAM_INDEX((*ptr))];
+ csb->csb_rpt[n].csb_flags |= csb_active;
+ }
+ }
+@@ -1821,7 +1821,7 @@
+ {
+ if ((*ptr)->nod_type != nod_rse)
+ {
+- n = (USHORT) (*ptr)->nod_arg[STREAM_INDEX((*ptr))];
++ n = (USHORT)(size_t) (*ptr)->nod_arg[STREAM_INDEX((*ptr))];
+ csb->csb_rpt[n].csb_flags &= ~csb_active;
+ }
+ }
+@@ -1862,12 +1862,12 @@
+
+ switch (node->nod_type) {
+ case nod_field:
+- n = (USHORT) node->nod_arg[e_fld_stream];
++ n = (USHORT)(size_t) node->nod_arg[e_fld_stream];
+ SET_DEP_BIT(dependencies, n);
+ return;
+
+ case nod_dbkey:
+- n = (USHORT) node->nod_arg[0];
++ n = (USHORT)(size_t) node->nod_arg[0];
+ SET_DEP_BIT(dependencies, n);
+ return;
+
+@@ -1923,7 +1923,7 @@
+
+ for (ptr = rse->rse_relation, end = ptr + rse->rse_count; ptr < end; ptr++) {
+ if ((*ptr)->nod_type != nod_rse) {
+- n = (USHORT) (*ptr)->nod_arg[STREAM_INDEX((*ptr))];
++ n = (USHORT)(size_t) (*ptr)->nod_arg[STREAM_INDEX((*ptr))];
+ CLEAR_DEP_BIT(dependencies, n);
+ }
+ }
+@@ -1951,7 +1951,7 @@
+
+ if (node->nod_type == nod_relation) {
+ assert(streams[0] < MAX_STREAMS && streams[0] < MAX_UCHAR);
+- streams[++streams[0]] = (UCHAR) node->nod_arg[e_rel_stream];
++ streams[++streams[0]] = (UCHAR)(size_t) node->nod_arg[e_rel_stream];
+ }
+ else if (node->nod_type == nod_union) {
+ clauses = node->nod_arg[e_uni_clauses];
+@@ -1991,7 +1991,7 @@
+ node = *ptr;
+ if (node->nod_type != nod_rse) {
+ assert(streams[0] < MAX_STREAMS && streams[0] < MAX_UCHAR);
+- streams[++streams[0]] = (UCHAR) node->nod_arg[STREAM_INDEX(node)];
++ streams[++streams[0]] = (UCHAR)(size_t) node->nod_arg[STREAM_INDEX(node)];
+ }
+ else {
+ compute_rse_streams(csb, (RSE) node, streams);
+@@ -3289,7 +3289,7 @@
+ JRD_NOD dbkey_temp, *ptr, *end;
+ DEV_BLKCHK(dbkey, type_nod);
+ if (dbkey->nod_type == nod_dbkey) {
+- if ((USHORT) dbkey->nod_arg[0] == stream)
++ if ((USHORT)(size_t) dbkey->nod_arg[0] == stream)
+ return dbkey;
+ else {
+ *position = *position + 1;
+@@ -3550,7 +3550,7 @@
+
+ temp[0]++;
+ relation_node = plan_node->nod_arg[e_retrieve_relation];
+- temp[temp[0]] = (UCHAR) relation_node->nod_arg[e_rel_stream];
++ temp[temp[0]] = (UCHAR)(size_t) relation_node->nod_arg[e_rel_stream];
+ }
+
+ // just because the user specified a join does not mean that
+@@ -3724,7 +3724,7 @@
+ rsb->rsb_type = rsb_aggregate;
+ assert((int)node->nod_arg[e_agg_stream] <= MAX_STREAMS);
+ assert((int)node->nod_arg[e_agg_stream] <= MAX_UCHAR);
+- rsb->rsb_stream = (UCHAR) node->nod_arg[e_agg_stream];
++ rsb->rsb_stream = (UCHAR)(size_t) node->nod_arg[e_agg_stream];
+ rsb->rsb_format = csb->csb_rpt[rsb->rsb_stream].csb_format;
+ rsb->rsb_next = OPT_compile(tdbb, csb, rse, NULL);
+ rsb->rsb_arg[0] = (RSB) node;
+@@ -4088,8 +4088,8 @@
+ idx->idx_rpt; ptr < end; ptr++, idx_tail++) {
+ node = *ptr;
+ if (node->nod_type != nod_field
+- || (USHORT) node->nod_arg[e_fld_stream] != stream
+- || (USHORT) node->nod_arg[e_fld_id] != idx_tail->idx_field
++ || (USHORT)(size_t) node->nod_arg[e_fld_stream] != stream
++ || (USHORT)(size_t) node->nod_arg[e_fld_id] != idx_tail->idx_field
+ || ptr[2*sort->nod_count] /* do not use index if NULLS FIRST is used */
+ #ifdef SCROLLABLE_CURSORS
+ )
+@@ -4249,7 +4249,7 @@
+ {
+ stream_ptr[i]->stream_rsb = NULL;
+ stream_ptr[i]->stream_num =
+- (USHORT) node->nod_arg[STREAM_INDEX(node)];
++ (USHORT)(size_t) node->nod_arg[STREAM_INDEX(node)];
+ }
+ }
+
+@@ -4327,10 +4327,10 @@
+ SET_TDBB(tdbb);
+ csb = opt->opt_csb;
+ procedure = MET_lookup_procedure_id(tdbb,
+- (SSHORT)node->nod_arg[e_prc_procedure], FALSE, FALSE, 0);
++ (SSHORT)(size_t)node->nod_arg[e_prc_procedure], FALSE, FALSE, 0);
+ rsb = FB_NEW_RPT(*tdbb->tdbb_default, RSB_PRC_count) Rsb();
+ rsb->rsb_type = rsb_procedure;
+- rsb->rsb_stream = (UCHAR) node->nod_arg[e_prc_stream];
++ rsb->rsb_stream = (UCHAR)(size_t) node->nod_arg[e_prc_stream];
+ rsb->rsb_procedure = procedure;
+ rsb->rsb_format = procedure->prc_format;
+ rsb->rsb_impure = CMP_impure(csb, sizeof(struct irsb_procedure));
+@@ -4943,8 +4943,8 @@
+ for (node_ptr = sort->nod_arg; node_ptr < end_node; node_ptr++) {
+ node = *node_ptr;
+ if (node->nod_type == nod_field
+- && (USHORT) node->nod_arg[e_fld_stream] == *ptr
+- && (USHORT) node->nod_arg[e_fld_id] == id) {
++ && (USHORT)(size_t) node->nod_arg[e_fld_stream] == *ptr
++ && (USHORT)(size_t) node->nod_arg[e_fld_id] == id) {
+ desc = &descriptor;
+ CMP_get_desc(tdbb, csb, node, desc);
+ /* International type text has a computed key */
+@@ -5041,8 +5041,8 @@
+ map_item->smb_desc.dsc_address = (UCHAR *) map_length;
+ map_length += desc->dsc_length;
+ if (node->nod_type == nod_field) {
+- map_item->smb_stream = (USHORT) node->nod_arg[e_fld_stream];
+- map_item->smb_field_id = (USHORT) node->nod_arg[e_fld_id];
++ map_item->smb_stream = (USHORT)(size_t) node->nod_arg[e_fld_stream];
++ map_item->smb_field_id = (USHORT)(size_t) node->nod_arg[e_fld_id];
+ }
+ }
+
+@@ -5054,8 +5054,8 @@
+ field has already been mentioned as a sort key, don't bother to repeat
+ it. */
+ while (stream_stack) {
+- id = (USHORT) LLS_POP(&id_stack);
+- stream = (USHORT) LLS_POP(&stream_stack);
++ id = (USHORT)(size_t) LLS_POP(&id_stack);
++ stream = (USHORT)(size_t) LLS_POP(&stream_stack);
+ format = CMP_format(tdbb, csb, stream);
+ desc = &format->fmt_desc[id];
+ if (id >= format->fmt_count || desc->dsc_length == 0)
+@@ -5384,7 +5384,7 @@
+ rsb = FB_NEW_RPT(*tdbb->tdbb_default, count + nstreams + 1) Rsb();
+ rsb->rsb_type = rsb_union;
+ rsb->rsb_count = count;
+- rsb->rsb_stream = (UCHAR) union_node->nod_arg[e_uni_stream];
++ rsb->rsb_stream = (UCHAR)(size_t) union_node->nod_arg[e_uni_stream];
+ rsb->rsb_format = csb->csb_rpt[rsb->rsb_stream].csb_format;
+ rsb->rsb_impure = CMP_impure(csb, sizeof(struct irsb));
+ rsb_ptr = rsb->rsb_arg;
+@@ -5926,8 +5926,8 @@
+ field = boolean->nod_arg[0];
+ if (field->nod_type != nod_field)
+ return NULL;
+- if ((USHORT) field->nod_arg[e_fld_stream] != stream ||
+- (USHORT) field->nod_arg[e_fld_id] != idx->idx_rpt[0].idx_field)
++ if ((USHORT)(size_t) field->nod_arg[e_fld_stream] != stream ||
++ (USHORT)(size_t) field->nod_arg[e_fld_id] != idx->idx_rpt[0].idx_field)
+ return NULL;
+ node = make_index_node(tdbb, relation, opt->opt_csb, idx);
+ retrieval = (IRB) node->nod_arg[e_idx_retrieval];
+@@ -5995,8 +5995,8 @@
+ return NULL;
+ }
+
+- if ((USHORT) field->nod_arg[e_fld_stream] != stream ||
+- (USHORT) field->nod_arg[e_fld_id] != idx->idx_rpt[0].idx_field
++ if ((USHORT)(size_t) field->nod_arg[e_fld_stream] != stream ||
++ (USHORT)(size_t) field->nod_arg[e_fld_id] != idx->idx_rpt[0].idx_field
+ || !(idx->idx_rpt[0].idx_itype == idx_string
+ || idx->idx_rpt[0].idx_itype == idx_byte_array
+ || idx->idx_rpt[0].idx_itype == idx_metadata
+@@ -6094,10 +6094,10 @@
+ if (access_type) {
+ for (arg = access_type->nod_arg, end = arg + plan_count;
+ arg < end; arg += 3) {
+- if (relation_id != (SSHORT) * arg)
++ if (relation_id != (SSHORT)(size_t) * arg)
+ /* index %s cannot be used in the specified plan */
+ ERR_post(gds_index_unused, gds_arg_string, *(arg + 2), 0);
+- if (idx->idx_id == (USHORT) * (arg + 1))
++ if (idx->idx_id == (USHORT)(size_t) * (arg + 1))
+ if (access_type->nod_type == nod_navigational)
+ idx->idx_runtime_flags |= idx_plan_navigate;
+ else /* nod_indices */
+@@ -6169,13 +6169,13 @@
+ If left side is still not a field, give up */
+
+ if (match->nod_type != nod_field ||
+- (USHORT) match->nod_arg[e_fld_stream] != stream ||
++ (USHORT)(size_t) match->nod_arg[e_fld_stream] != stream ||
+ !computable(opt->opt_csb, value, stream, true, false))
+ {
+ match = value;
+ value = boolean->nod_arg[0];
+ if (match->nod_type != nod_field ||
+- (USHORT) match->nod_arg[e_fld_stream] != stream ||
++ (USHORT)(size_t) match->nod_arg[e_fld_stream] != stream ||
+ !computable(opt->opt_csb, value, stream, true, false))
+ {
+ return 0;
+@@ -6194,7 +6194,7 @@
+ #ifdef EXPRESSION_INDICES
+ (idx->idx_expression ||
+ #endif
+- ((USHORT) match->nod_arg[e_fld_id] == idx->idx_rpt[i].idx_field)
++ ((USHORT)(size_t) match->nod_arg[e_fld_id] == idx->idx_rpt[i].idx_field)
+ #ifdef EXPRESSION_INDICES
+ )
+ #endif
+@@ -6582,7 +6582,7 @@
+ return FALSE;
+ for (streams = river->riv_streams, end =
+ streams + river->riv_count; streams < end; streams++)
+- if ((USHORT) node->nod_arg[e_fld_stream] == *streams)
++ if ((USHORT)(size_t) node->nod_arg[e_fld_stream] == *streams)
+ return TRUE;
+ return FALSE;
+ }
+@@ -6779,7 +6779,7 @@
+ ptr < end; ptr++) {
+ node = *ptr;
+ if (node->nod_type != nod_rse) {
+- stream = (USHORT) node->nod_arg[STREAM_INDEX(node)];
++ stream = (USHORT)(size_t) node->nod_arg[STREAM_INDEX(node)];
+ csb->csb_rpt[stream].csb_flags &= ~csb_active;
+ }
+ else
+--- firebird-1.5.2.4731/src/jrd/par.cpp.orig 2004-06-19 10:11:45.000000000 +0200
++++ firebird-1.5.2.4731/src/jrd/par.cpp 2005-12-24 13:43:37.660357688 +0100
+@@ -2518,7 +2518,7 @@
+ node->nod_arg[e_agg_rse] = parse(tdbb, csb, TYPE_RSE);
+ node->nod_arg[e_agg_group] = parse(tdbb, csb, OTHER);
+ node->nod_arg[e_agg_map] =
+- par_map(tdbb, csb, (USHORT) node->nod_arg[e_agg_stream]);
++ par_map(tdbb, csb, (USHORT)(size_t) node->nod_arg[e_agg_stream]);
+ break;
+
+ case blr_group_by:
+--- firebird-1.5.2.4731/src/jrd/rse.cpp.orig 2004-10-09 16:14:53.000000000 +0200
++++ firebird-1.5.2.4731/src/jrd/rse.cpp 2005-12-24 13:47:46.019601344 +0100
+@@ -730,8 +730,8 @@
+ /* Initialize the record number of each stream in the union */
+
+ ptr = &rsb->rsb_arg[rsb->rsb_count];
+- for (end = ptr + (USHORT) * ptr; ++ptr <= end;)
+- request->req_rpb[(USHORT) * ptr].rpb_number = -1;
++ for (end = ptr + (USHORT)(size_t) * ptr; ++ptr <= end;)
++ request->req_rpb[(USHORT)(size_t) * ptr].rpb_number = -1;
+
+ rsb = rsb->rsb_arg[0];
+ }
+@@ -2914,7 +2914,7 @@
+ request = tdbb->tdbb_request;
+ stack = (LLS) rsb->rsb_arg[streams];
+ for (; stack; stack = stack->lls_next) {
+- rpb = &request->req_rpb[(USHORT) stack->lls_object];
++ rpb = &request->req_rpb[(USHORT)(size_t) stack->lls_object];
+
+ /* Make sure a record block has been allocated. If there isn't
+ one, first find the format, then allocate the record block */
+@@ -2972,7 +2972,7 @@
+ list that contains the data to send back
+ */
+ if (IS_INTL_DATA(&item->smb_desc) &&
+- (USHORT) item->smb_desc.dsc_address <
++ (USHORT)(size_t) item->smb_desc.dsc_address <
+ map->smb_key_length * sizeof(ULONG)) continue;
+
+ rpb = &request->req_rpb[item->smb_stream];
+@@ -3238,7 +3238,7 @@
+ the sort record, then want to sort by language dependent order */
+
+ if (IS_INTL_DATA(&item->smb_desc) &&
+- (USHORT) item->smb_desc.dsc_address <
++ (USHORT)(size_t) item->smb_desc.dsc_address <
+ map->smb_key_length * sizeof(ULONG)) {
+ INTL_string_to_key(tdbb, INTL_INDEX_TYPE(&item->smb_desc),
+ from, &to, FALSE);
+--- firebird-1.5.2.4731/src/qli/command.cpp.orig 2003-04-03 11:34:54.000000000 +0200
++++ firebird-1.5.2.4731/src/qli/command.cpp 2005-12-24 15:04:12.438359712 +0100
+@@ -311,32 +311,32 @@
+ ptr = node->syn_arg;
+
+ for (i = 0; i < node->syn_count; i++) {
+- foo = (USHORT) * ptr++;
++ foo = (USHORT)(size_t) * ptr++;
+ sw = (ENUM set_t) foo;
+ value = *ptr++;
+ switch (sw) {
+ case set_blr:
+- QLI_blr = (USHORT) value;
++ QLI_blr = (USHORT)(size_t) value;
+ break;
+
+ case set_statistics:
+- QLI_statistics = (USHORT) value;
++ QLI_statistics = (USHORT)(size_t) value;
+ break;
+
+ case set_columns:
+- QLI_name_columns = QLI_columns = (USHORT) value;
++ QLI_name_columns = QLI_columns = (USHORT)(size_t) value;
+ break;
+
+ case set_lines:
+- QLI_lines = (USHORT) value;
++ QLI_lines = (USHORT)(size_t) value;
+ break;
+
+ case set_semi:
+- QLI_semi = (USHORT) value;
++ QLI_semi = (USHORT)(size_t) value;
+ break;
+
+ case set_echo:
+- QLI_echo = (USHORT) value;
++ QLI_echo = (USHORT)(size_t) value;
+ break;
+
+ case set_form:
+@@ -399,7 +399,7 @@
+ break;
+
+ case set_count:
+- QLI_count = (USHORT) value;
++ QLI_count = (USHORT)(size_t) value;
+ break;
+
+ case set_charset:
+--- firebird-1.5.2.4731/src/qli/expand.cpp.orig 2003-04-03 11:34:52.000000000 +0200
++++ firebird-1.5.2.4731/src/qli/expand.cpp 2005-12-24 15:04:49.271760184 +0100
+@@ -2220,7 +2220,7 @@
+ for (i = 0; i < node->nod_count; i++) {
+ expr = *syn_ptr++;
+ if (expr->syn_type == nod_position) {
+- position = (USHORT) expr->syn_arg[0];
++ position = (USHORT)(size_t) expr->syn_arg[0];
+ if (!list || !position || position > list->nod_count)
+ IBERROR(152); /* Msg152 invalid ORDER BY ordinal */
+ item = (ITM) list->nod_arg[position - 1];
+--- firebird-1.5.2.4731/src/qli/meta.epp.orig 2004-09-17 22:34:59.000000000 +0200
++++ firebird-1.5.2.4731/src/qli/meta.epp 2005-12-24 15:20:58.941348000 +0100
+@@ -3795,7 +3795,7 @@
+ RLB rlb;
+
+
+- privileges = (USHORT) node->syn_arg[s_grant_privileges];
++ privileges = (USHORT)(size_t) node->syn_arg[s_grant_privileges];
+ relation = (QLI_REL) node->syn_arg[s_grant_relation];
+ relation->rel_database = database = setup_update(relation->rel_database);
+ relation_name = relation->rel_symbol->sym_string;
+--- firebird-1.5.2.4731/src/burp/burp.cpp.orig 2004-01-07 11:10:18.000000000 +0100
++++ firebird-1.5.2.4731/src/burp/burp.cpp 2005-12-24 13:57:23.889751728 +0100
+@@ -1606,7 +1606,7 @@
+ #ifndef WIN_NT
+ signal(SIGPIPE, SIG_IGN);
+ #endif
+- fil->fil_fd = reinterpret_cast<DESC>(GBAK_STDOUT_DESC);
++ fil->fil_fd = (DESC)(GBAK_STDOUT_DESC);
+ break;
+ }
+ else
+@@ -1724,7 +1724,7 @@
+
+ tdgbl->action->act_action = ACT_restore;
+ if (!strcmp(fil->fil_name, "stdin")) {
+- fil->fil_fd = reinterpret_cast<DESC>(GBAK_STDIN_DESC);
++ fil->fil_fd = (DESC)(GBAK_STDIN_DESC);
+ tdgbl->file_desc = fil->fil_fd;
+ tdgbl->gbl_sw_files = fil->fil_next;
+ }
+--- firebird-1.5.2.4731/src/dsql/parse.cpp.orig 2004-01-31 14:31:48.000000000 +0100
++++ firebird-1.5.2.4731/src/dsql/parse.cpp 2005-12-24 16:11:42.519653768 +0100
+@@ -6431,7 +6431,7 @@
+ case 79:
+ {
+ lex.g_field->fld_dtype = dtype_cstring;
+- lex.g_field->fld_character_length = (USHORT) yyvsp[-2]; }
++ lex.g_field->fld_character_length = (USHORT)(size_t) yyvsp[-2]; }
+ break;
+ case 80:
+ { yyval = (DSQL_NOD) NULL; }
+@@ -7551,27 +7551,27 @@
+ case 507:
+ {
+ lex.g_field->fld_dtype = dtype_blob;
+- lex.g_field->fld_seg_length = (USHORT) yyvsp[-1];
++ lex.g_field->fld_seg_length = (USHORT)(size_t) yyvsp[-1];
+ lex.g_field->fld_sub_type = 0;
+ }
+ break;
+ case 508:
+ {
+ lex.g_field->fld_dtype = dtype_blob;
+- lex.g_field->fld_seg_length = (USHORT) yyvsp[-3];
+- lex.g_field->fld_sub_type = (USHORT) yyvsp[-1];
++ lex.g_field->fld_seg_length = (USHORT)(size_t) yyvsp[-3];
++ lex.g_field->fld_sub_type = (USHORT)(size_t) yyvsp[-1];
+ }
+ break;
+ case 509:
+ {
+ lex.g_field->fld_dtype = dtype_blob;
+ lex.g_field->fld_seg_length = 80;
+- lex.g_field->fld_sub_type = (USHORT) yyvsp[-1];
++ lex.g_field->fld_sub_type = (USHORT)(size_t) yyvsp[-1];
+ }
+ break;
+ case 510:
+ {
+- lex.g_field->fld_seg_length = (USHORT) yyvsp[0];
++ lex.g_field->fld_seg_length = (USHORT)(size_t) yyvsp[0];
+ }
+ break;
+ case 511:
+@@ -7581,7 +7581,7 @@
+ break;
+ case 512:
+ {
+- lex.g_field->fld_sub_type = (USHORT) yyvsp[0];
++ lex.g_field->fld_sub_type = (USHORT)(size_t) yyvsp[0];
+ }
+ break;
+ case 513:
+@@ -7602,7 +7602,7 @@
+ case 517:
+ {
+ lex.g_field->fld_dtype = dtype_text;
+- lex.g_field->fld_character_length = (USHORT) yyvsp[-1];
++ lex.g_field->fld_character_length = (USHORT)(size_t) yyvsp[-1];
+ lex.g_field->fld_flags |= FLD_national;
+ }
+ break;
+@@ -7616,14 +7616,14 @@
+ case 519:
+ {
+ lex.g_field->fld_dtype = dtype_varying;
+- lex.g_field->fld_character_length = (USHORT) yyvsp[-1];
++ lex.g_field->fld_character_length = (USHORT)(size_t) yyvsp[-1];
+ lex.g_field->fld_flags |= FLD_national;
+ }
+ break;
+ case 520:
+ {
+ lex.g_field->fld_dtype = dtype_text;
+- lex.g_field->fld_character_length = (USHORT) yyvsp[-1];
++ lex.g_field->fld_character_length = (USHORT)(size_t) yyvsp[-1];
+ }
+ break;
+ case 521:
+@@ -7635,7 +7635,7 @@
+ case 522:
+ {
+ lex.g_field->fld_dtype = dtype_varying;
+- lex.g_field->fld_character_length = (USHORT) yyvsp[-1];
++ lex.g_field->fld_character_length = (USHORT)(size_t) yyvsp[-1];
+ }
+ break;
+ case 531:
+@@ -7715,7 +7715,7 @@
+ lex.g_field->fld_dtype = dtype_long;
+ lex.g_field->fld_length = sizeof (SLONG);
+ }
+- lex.g_field->fld_precision = (USHORT) yyvsp[-1];
++ lex.g_field->fld_precision = (USHORT)(size_t) yyvsp[-1];
+ }
+ break;
+ case 536:
+@@ -7775,8 +7775,8 @@
+ lex.g_field->fld_length = sizeof (SLONG);
+ }
+ }
+- lex.g_field->fld_precision = (USHORT) yyvsp[-3];
+- lex.g_field->fld_scale = - (SSHORT) yyvsp[-1];
++ lex.g_field->fld_precision = (USHORT)(size_t) yyvsp[-3];
++ lex.g_field->fld_scale = - (SSHORT)(size_t) yyvsp[-1];
+ }
+ break;
+ case 539:
+@@ -7942,7 +7942,7 @@
+ { yyval = make_node (nod_table_lock, (int) 2, make_list (yyvsp[-1]), yyvsp[0]); }
+ break;
+ case 602:
+-{ yyval = make_flag_node (nod_lock_mode, (SSHORT) ((SSHORT) yyvsp[-1] | (SSHORT) yyvsp[0]), (SSHORT) 0, NULL); }
++{ yyval = make_flag_node (nod_lock_mode, (SSHORT) ((SSHORT)(size_t) yyvsp[-1] | (SSHORT)(size_t) yyvsp[0]), (SSHORT) 0, NULL); }
+ break;
+ case 603:
+ { yyval = 0; }
+--- firebird-1.5.2.4731/src/gpre/cmd.cpp.orig 2003-10-30 23:25:53.000000000 +0100
++++ firebird-1.5.2.4731/src/gpre/cmd.cpp 2005-12-24 12:30:50.312295512 +0100
+@@ -204,7 +204,7 @@
+
+ case ACT_drop_shadow:
+ put_numeric(request, gds_dyn_delete_shadow,
+- (SSHORT) action->act_object);
++ (SSHORT)(size_t) action->act_object);
+ STUFF_END;
+ break;
+
+--- firebird-1.5.2.4731/src/common/classes/alloc.h.orig 2004-09-17 22:34:27.000000000 +0200
++++ firebird-1.5.2.4731/src/common/classes/alloc.h 2005-12-24 12:27:24.200629248 +0100
+@@ -242,22 +242,22 @@
+ void operator delete[](void* mem) throw();
+
+ #ifdef DEBUG_GDS_ALLOC
+-static inline void* operator new(size_t s, Firebird::MemoryPool& pool, char* file, int line) {
++inline void* operator new(size_t s, Firebird::MemoryPool& pool, char* file, int line) {
+ return pool.allocate(s, 0, file, line);
+ // return pool.calloc(s, 0, file, line);
+ }
+-static inline void* operator new[](size_t s, Firebird::MemoryPool& pool, char* file, int line) {
++inline void* operator new[](size_t s, Firebird::MemoryPool& pool, char* file, int line) {
+ return pool.allocate(s, 0, file, line);
+ // return pool.calloc(s, 0, file, line);
+ }
+ #define FB_NEW(pool) new(pool,__FILE__,__LINE__)
+ #define FB_NEW_RPT(pool,count) new(pool,count,__FILE__,__LINE__)
+ #else
+-static inline void* operator new(size_t s, Firebird::MemoryPool& pool) {
++inline void* operator new(size_t s, Firebird::MemoryPool& pool) {
+ return pool.allocate(s);
+ // return pool.calloc(s);
+ }
+-static inline void* operator new[](size_t s, Firebird::MemoryPool& pool) {
++inline void* operator new[](size_t s, Firebird::MemoryPool& pool) {
+ return pool.allocate(s);
+ // return pool.calloc(s);
+ }