Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 227529
Collapse All | Expand All

(-)Maude-2.3/src/BuiltIn/stringOpSymbol.cc (-4 / +31 lines)
Lines 220-226 StringOpSymbol::eqRewrite(DagNode* subje Link Here
220
	      case CODE('f', 'l'):
220
	      case CODE('f', 'l'):
221
		{
221
		{
222
		  bool error;
222
		  bool error;
223
		  //double fl = stringToDouble(left.c_str(), error);
223
#ifdef ROPE_C_STR_BROKEN
224
		  //
225
		  //	This kudge doesn't seem to be need nowadays, but copy() doesn't work.
224
		  //
226
		  //
225
		  //	This messing about is needed because Rope::c_str()
227
		  //	This messing about is needed because Rope::c_str()
226
		  //	fails in libstdc++-v3
228
		  //	fails in libstdc++-v3
Lines 231-237 StringOpSymbol::eqRewrite(DagNode* subje Link Here
231
		  t[len] = '\0';
233
		  t[len] = '\0';
232
		  double fl = stringToDouble(t, error);
234
		  double fl = stringToDouble(t, error);
233
		  delete [] t;
235
		  delete [] t;
234
		  //
236
#else
237
		  double fl = stringToDouble(left.c_str(), error);
238
#endif
235
		  if (error)
239
		  if (error)
236
		    goto fail;
240
		    goto fail;
237
		  return floatSymbol->rewriteToFloat(subject, context, fl);
241
		  return floatSymbol->rewriteToFloat(subject, context, fl);
Lines 282-287 StringOpSymbol::eqRewrite(DagNode* subje Link Here
282
		    break;
286
		    break;
283
		  default:
287
		  default:
284
		    CantHappen("bad string op");
288
		    CantHappen("bad string op");
289
		    r = false;  // avoid compiler warning
285
		  }
290
		  }
286
		Assert(trueTerm.getTerm() != 0 && falseTerm.getTerm() != 0,
291
		Assert(trueTerm.getTerm() != 0 && falseTerm.getTerm() != 0,
287
		       "null true/false for relational op");
292
		       "null true/false for relational op");
Lines 358-363 StringOpSymbol::eqRewrite(DagNode* subje Link Here
358
			      break;
363
			      break;
359
			    default:
364
			    default:
360
			      CantHappen("bad string op");
365
			      CantHappen("bad string op");
366
			      r = 0;  // avoid compiler warning
361
			    }
367
			    }
362
			  Assert(notFoundTerm.getTerm() != 0, "null notFound for find op");
368
			  Assert(notFoundTerm.getTerm() != 0, "null notFound for find op");
363
			  if (r == NONE)
369
			  if (r == NONE)
Lines 591-596 StringOpSymbol::ropeToNumber(const crope Link Here
591
		  if (!isalnum(subject[j]))
597
		  if (!isalnum(subject[j]))
592
		    return false;
598
		    return false;
593
		}
599
		}
600
	      //
601
	      //	We have detected a fraction form.
602
	      //
603
#ifdef ROPE_C_STR_BROKEN
604
	      //
605
	      //	This kudge doesn't seem to be need nowadays, but copy() doesn't work.
606
	      //
594
	      char* t = new char[len];  // longer than needed but who cares
607
	      char* t = new char[len];  // longer than needed but who cares
595
	      int dLen = len - (i + 1);
608
	      int dLen = len - (i + 1);
596
	      subject.copy(i + 1, dLen, t);
609
	      subject.copy(i + 1, dLen, t);
Lines 609-628 StringOpSymbol::ropeToNumber(const crope Link Here
609
		}
622
		}
610
	      delete [] t;
623
	      delete [] t;
611
	      return true;
624
	      return true;
625
#else
626
	      return mpz_set_str(denominator.get_mpz_t(), subject.substr(i + 1).c_str(), base) == 0 &&
627
		mpz_set_str(numerator.get_mpz_t(), subject.substr(0,i).c_str(), base) == 0;
628
#endif	      
612
	    }
629
	    }
613
	  else
630
	  else
614
	    return false;
631
	    return false;
615
	}
632
	}
616
    }
633
    }
634
  //
635
  //	We have a regular integer form.
636
  //
637
  denominator = 0;
638
#ifdef ROPE_C_STR_BROKEN
639
  //
640
  //	This kudge doesn't seem to be need nowadays, but copy() doesn't work.
641
  //
617
  char* t = new char[len + 1];
642
  char* t = new char[len + 1];
618
  subject.copy(t);
643
  subject.copy(t);
619
  t[len] = '\0';
644
  t[len] = '\0';
620
  if (mpz_set_str(numerator.get_mpz_t(), t, base) == 0)
645
  if (mpz_set_str(numerator.get_mpz_t(), t, base) == 0)
621
    {
646
    {
622
      delete [] t;
647
      delete [] t;
623
      denominator = 0;
624
      return true;
648
      return true;
625
    }
649
    }
626
  delete [] t;
650
  delete [] t;
627
  return false;    
651
  return false;
652
#else
653
  return mpz_set_str(numerator.get_mpz_t(), subject.c_str(), base) == 0;
654
#endif
628
}
655
}
(-)Maude-2.3/src/Utility/macros.hh (-3 / +3 lines)
Lines 50-59 Link Here
50
#if HAVE_CTYPE_H
50
#if HAVE_CTYPE_H
51
#include <ctype.h>
51
#include <ctype.h>
52
#endif
52
#endif
53
#if HAVE_STRINGS_H
53
#if HAVE_STRING_H
54
#include <strings.h>
55
#elif HAVE_STRING_H
56
#include <string.h>
54
#include <string.h>
55
#elif HAVE_STRINGS_H
56
#include <strings.h>
57
#endif
57
#endif
58
#if HAVE_UNISTD_H
58
#if HAVE_UNISTD_H
59
#include <unistd.h>  // needed by solaris
59
#include <unistd.h>  // needed by solaris

Return to bug 227529