[Aldor-l] Bug with macros

Ralf Hemmecke ralf at hemmecke.de
Fri Dec 14 12:09:05 EST 2007


Could someone please take a look at the following problem.

Interestingly, no segfault happens if the *unused* function degreeN is
not in the file.

Thank you
Ralf

---BEGIN bugPolySegfault.as
-- 14-Dec-2007
-- The following segfaults. All other combination of options produce
-- proper output.
--  aldor -DSegfault -fx -lalgebra -laldor bugPolySegfault.as
--  ./bugPolySegfault
--: I am here
--: Segmentation fault
#include "algebra";
#include "aldorio";

R ==> Integer;
import from R, List R, Symbol;

#if Segfault
Kn ==> SparseUnivariatePolynomial(R, (-$Symbol) "k");
#elseif DomainConstant
Kn == SparseUnivariatePolynomial(R, (-$Symbol) "k");
#else
Kn ==> SparseUnivariatePolynomial(R, -"k");
#endif

Knk ==> SparseUnivariatePolynomial(Kn, -"k");
import from Kn;
import from Knk;
n : Knk == coerce(monom$Kn);
k : Knk == monom;
p2: Knk := (n-k+1)^2;
m: Integer := degree(p2);
#if NoBug
#else
degreeN(r: Knk): Integer == {
	d: Integer := degree(coefficient(r,0));
	for i in 1..m repeat {
		e := degree coefficient(r,i);
		if d < e then d := e;
	}
	d;
}
#endif
stdout << "I am here" << newline;
a: Kn := coefficient(p2,degree(p2)-1);
stdout << "a = " << a << newline;
---END bugPolySegfault.as





More information about the Aldor-l mailing list