Comment #5 on issue 242 by tvijlbr...@gmail.com: Gamba forms fail on Debian  
ARM
http://code.google.com/p/gambas/issues/detail?id=242

Eureka:

user@Nokia-N800-43-7:/media/data/user/gamba/gambas3-3.1.1$ gcc testpow.c
user@Nokia-N800-43-7:/media/data/user/gamba/gambas3-3.1.1$ ./a.out
8
segmentation fault
user@Nokia-N800-43-7:/media/data/user/gamba/gambas3-3.1.1$ cat testpow.c
#include <math.h>
#include <stdio.h>

long double powl(long double x, long double y)
{
   return pow(x, y);
}

int main()
{
   long double i= -5;
   printf("%d\n", sizeof(i));
   for (; i<=5; i++)
   printf("%g\n", (double)10*pow(10,i));
}

====

So defining a version of powl causes the segfault!

What happens under the hood is that the symbol powl is replaced by pow
by the compiler. So the powl(long double,long double) is mapped to  
pow(double,double). Your powl() definition turns into

double pow(double x, double y)
{
   return pow(x, y);
}

A recursive funtion which eats up the stack until it segfaults.

I'm now recompiling with a patched config.h:

/* Define if you have modfl function. */
/* #undef HAVE_MODFL */
#define HAVE_MODFL 1

/* Define if you have powl function. */
/* #undef HAVE_POWL */
#define HAVE_POWL 1

I'm not sure about the (best) fix. Suggestions?


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Gambas-user mailing list
Gambas-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user

Reply via email to