Index: builtins.c
===================================================================
RCS file: /cvsroot/neko/vm/builtins.c,v
retrieving revision 1.67
diff -r1.67 builtins.c
683,700c683,691
< 		if( val_strlen(f) >= 2 && c[0] == '0' && c[1] == 'x' ) {
< 			int h = 0;
< 			c += 2;
< 			while( *c ) {
< 				char k = *c++;
< 				if( k >= '0' && k <= '9' )
< 					h = (h << 4) | (k - '0');
< 				else if( k >= 'A' && k <= 'F' )
< 					h = (h << 4) | ((k - 'A') + 10);
< 				else if( k >= 'a' && k <= 'f' )
< 					h = (h << 4) | ((k - 'a') + 10);
< 				else
< 					return alloc_int(0);
< 			}
< 			return alloc_int(h);
< 		}
< 		return alloc_int( atoi(val_string(f)) );
< 		}
---
>       char *p;
>       long l;
> 
>       l = strtol(c, &p, 0);
>       if(p == NULL || *p == 0)
>          return alloc_int(l);
>          
>       return val_null;
>    }
712,714c703,714
< 	if( val_is_string(f) )
< 		return alloc_float( atof(val_string(f)) );
< 	if( val_is_number(f) )
---
> 	if( val_is_string(f) ) {
>       char *s = val_string(f);
>       char *p;
>       float f;
> 
>       f = strtof(s, &p);
>       if(p == NULL || *p == 0)
>          return alloc_float(f);
> 
>       return val_null;
> 
> 	} else if( val_is_number(f) )
715a716
> 
