In article <1.5.4.32.19970814030029.0070a6fc_at_mail.adelaide.on.net>, you wrote:
>The following trace says it all ... Has anyone seen this problem and fixed it?
DejaNews is handy for these sorts of things. Here is a patch you can find
there from "Uwe F. Mayer" <mayer_at_math.Vanderbilt.Edu>.
Tripp
*** libg++-2.7.2/libg++/src/Intdouble.cc Fri Jun 16 17:43:47 1995
--- libg++-2.7.2.alpha/libg++/src/Intdouble.cc Wed Jul 9 10:38:15 1997
***************
*** 90,96 ****
divide(num, den, q, r);
double d1 = q.as_double();
! if (d1 >= DBL_MAX || d1 <= -DBL_MAX || sign(r) == 0)
return d1;
else // use as much precision as available for fractional part
{
--- 90,100 ----
divide(num, den, q, r);
double d1 = q.as_double();
! if (d1 >= DBL_MAX)
! return d1;
! else if (d1 <= -DBL_MAX)
! return d1;
! else if (sign(r) == 0)
return d1;
else // use as much precision as available for fractional part
{
*** libg++-2.7.2/libg++/src/Regex.cc Mon Jun 17 17:30:25 1996
--- libg++-2.7.2.alpha/libg++/src/Regex.cc Tue Jul 8 12:13:58 1997
***************
*** 29,34 ****
--- 29,35 ----
extern "C" {
#if 1
+ #define HAVE_REG_TYPES_H
#include
#else
#include
*** libg++-2.7.2/libiberty/choose-temp.c Mon May 27 13:25:10 1996
--- libg++-2.7.2.alpha/libiberty/choose-temp.c Tue Jul 8 12:13:58 1997
***************
*** 35,40 ****
--- 35,44 ----
#include /* May get P_tmpdir. */
+ #ifdef NEED_STRING_H
+ #include
+ #endif
+
#ifdef IN_GCC
#include "config.h"
#include "gansidecl.h"
*** libg++-2.7.2/libiberty/getopt.c Fri Jul 7 18:48:36 1995
--- libg++-2.7.2.alpha/libiberty/getopt.c Tue Jul 8 12:13:58 1997
***************
*** 54,59 ****
--- 54,63 ----
#include
+ #ifdef NEED_STRING_H
+ #include
+ #endif
+
/* Comment out all this code if we are using the GNU C Library, and are not
actually compiling the library itself. This code is part of the GNU C
Library, but also included in many other GNU distributions. Compiling
*** libg++-2.7.2/libiberty/xstrdup.c Thu Dec 28 11:37:37 1995
--- libg++-2.7.2.alpha/libiberty/xstrdup.c Tue Jul 8 12:13:58 1997
***************
*** 5,10 ****
--- 5,14 ----
#include "ansidecl.h"
#include "libiberty.h"
+ #ifdef NEED_STRING_H
+ #include
+ #endif
+
char *
xstrdup (s)
const char *s;
*** libg++-2.7.2/librx/rx.c Tue Dec 19 13:57:20 1995
--- libg++-2.7.2.alpha/librx/rx.c Tue Jul 8 12:19:34 1997
***************
*** 5169,5175 ****
return REG_ESPACE;
++paramc;
params [sync_se].se = re_se_tv;
! side = (rx_side_effect)sync_se;
goto add_side_effect;
}
}
--- 5169,5175 ----
return REG_ESPACE;
++paramc;
params [sync_se].se = re_se_tv;
! side = (rx_side_effect)(long)sync_se;
goto add_side_effect;
}
}
***************
*** 5547,5556 ****
{
struct rexp_node * left
= rx_mk_r_side_effect (&rxb->rx,
! (rx_side_effect)left_se);
struct rexp_node * right
= rx_mk_r_side_effect (&rxb->rx,
! (rx_side_effect)right_se);
struct rexp_node * c1
= (*inner
? rx_mk_r_concat (&rxb->rx, left, *inner) : left);
--- 5547,5556 ----
{
struct rexp_node * left
= rx_mk_r_side_effect (&rxb->rx,
! (rx_side_effect)(long)left_se);
struct rexp_node * right
= rx_mk_r_side_effect (&rxb->rx,
! (rx_side_effect)(long)right_se);
struct rexp_node * c1
= (*inner
? rx_mk_r_concat (&rxb->rx, left, *inner) : left);
***************
*** 5595,5601 ****
{
struct rexp_node * sync
= rx_mk_r_side_effect (&rxb->rx,
! (rx_side_effect)sync_se);
struct rexp_node * conc
= rx_mk_r_concat (&rxb->rx, sync, 0);
--- 5595,5601 ----
{
struct rexp_node * sync
= rx_mk_r_side_effect (&rxb->rx,
! (rx_side_effect)(long)sync_se);
struct rexp_node * conc
= rx_mk_r_concat (&rxb->rx, sync, 0);
***************
*** 5720,5726 ****
(rx_side_effect)re_se_push0);
struct rexp_node * start_one_iter
= rx_mk_r_side_effect (&rxb->rx,
! (rx_side_effect)iter_se);
struct rexp_node * phase1
= rx_mk_r_concat (&rxb->rx, start_one_iter,
*last_expression);
--- 5720,5726 ----
(rx_side_effect)re_se_push0);
struct rexp_node * start_one_iter
= rx_mk_r_side_effect (&rxb->rx,
! (rx_side_effect)(long)iter_se);
struct rexp_node * phase1
= rx_mk_r_concat (&rxb->rx, start_one_iter,
*last_expression);
***************
*** 5738,5744 ****
= rx_mk_r_concat (&rxb->rx, push0, loop);
struct rexp_node * final_test
= rx_mk_r_side_effect (&rxb->rx,
! (rx_side_effect)end_se);
struct rexp_node * full_exp
= rx_mk_r_concat (&rxb->rx, push_n_loop, final_test);
--- 5738,5744 ----
= rx_mk_r_concat (&rxb->rx, push0, loop);
struct rexp_node * final_test
= rx_mk_r_side_effect (&rxb->rx,
! (rx_side_effect)(long)end_se);
struct rexp_node * full_exp
= rx_mk_r_concat (&rxb->rx, push_n_loop, final_test);
***************
*** 5905,5911 ****
++paramc;
params[backref_se].se = re_se_backref;
params[backref_se].op1 = c1;
! side = (rx_side_effect)backref_se;
goto add_side_effect;
}
break;
--- 5905,5911 ----
++paramc;
params[backref_se].se = re_se_backref;
params[backref_se].op1 = c1;
! side = (rx_side_effect)(long)backref_se;
goto add_side_effect;
}
break;
***************
*** 5976,5982 ****
params[win_se].se = re_se_win;
{
struct rexp_node * se
! = rx_mk_r_side_effect (&rxb->rx, (rx_side_effect)win_se);
struct rexp_node * concat
= rx_mk_r_concat (&rxb->rx, rexp, se);
if (!(se && concat))
--- 5976,5982 ----
params[win_se].se = re_se_win;
{
struct rexp_node * se
! = rx_mk_r_side_effect (&rxb->rx, (rx_side_effect)(long)win_se);
struct rexp_node * concat
= rx_mk_r_concat (&rxb->rx, rexp, se);
if (!(se && concat))
*** libg++-2.7.2/librx/rx.h Fri Apr 14 10:36:00 1995
--- libg++-2.7.2.alpha/librx/rx.h Tue Jul 8 12:20:48 1997
***************
*** 1285,1291 ****
--- 1285,1293 ----
};
/* Type for byte offsets within the string. POSIX mandates this. */
+ #ifndef HAVE_REG_TYPES_H
typedef int regoff_t;
+ #endif
/* This is the structure we store register match data in. See
regex.texinfo for a full description of what registers match. */
***************
*** 1296,1311 ****
--- 1298,1317 ----
regoff_t *end;
};
+ #ifndef HAVE_REG_TYPES_H
typedef struct re_pattern_buffer regex_t;
+ #endif
/* POSIX specification for registers. Aside from the different names than
`re_registers', POSIX uses an array of structures, instead of a
structure of arrays. */
+ #ifndef HAVE_REG_TYPES_H
typedef struct
{
regoff_t rm_so; /* Byte offset from string's start to substring's start. */
regoff_t rm_eo; /* Byte offset from string's start to substring's end. */
} regmatch_t;
+ #endif
/* The following bits are used to determine the regexp syntax we
***************
*** 2604,2610 ****
--- 2610,2620 ----
search_state.outer_pos.offset = 0;
search_state.outer_pos.size = 0;
+ #ifdef LONG_POINTERS
+ search_state.outer_pos.pos = (unsigned char *)(long)startpos;
+ #else
search_state.outer_pos.pos = (unsigned char *)startpos;
+ #endif
init_fastmap (rxb, &search_state);
search_state.fastmap_resume_pt = rx_fastmap_start;
***************
*** 2714,2720 ****
--- 2724,2734 ----
test_match:
{
enum rx_test_match_entry test_pc;
+ #ifdef LONG_POINTERS
+ long inx;
+ #else
int inx;
+ #endif
test_pc = search_state.test_match_resume_pt;
if (test_pc == rx_test_start)
{
***************
*** 2886,2892 ****
/* We've encountered an instruction other than next-char.
* Dispatch that instruction:
*/
! inx = (int)search_state.ifr->inx;
#ifdef RX_DEBUG_0
if (rx_debug_trace)
{
--- 2900,2906 ----
/* We've encountered an instruction other than next-char.
* Dispatch that instruction:
*/
! inx = (long)search_state.ifr->inx;
#ifdef RX_DEBUG_0
if (rx_debug_trace)
{
Received on Thu Aug 14 1997 - 05:34:42 NZST