thread fixes

This commit is contained in:
Vitor Santos Costa 2013-04-07 00:00:41 +01:00
parent 537efbc341
commit 12799589a8
3 changed files with 18 additions and 22 deletions

View File

@ -13,7 +13,7 @@ static void readswap8(double *buf);
static byte get_hostbyteorder(void); static byte get_hostbyteorder(void);
static byte get_inbyteorder(void); static byte get_inbyteorder(void);
static uint32 get_wkbType(void); static uint32 get_wkbType(void);
static Term get_point(char *functor); static Term get_point(char *functor USES_REGS);
static Term get_linestring(char *functor); static Term get_linestring(char *functor);
static Term get_polygon(char *functor); static Term get_polygon(char *functor);
static Term get_geometry(uint32 type); static Term get_geometry(uint32 type);
@ -150,7 +150,7 @@ static void readswap8(double *buf) {
cursor += 8; cursor += 8;
} }
static Term get_point(char *func){ static Term get_point(char *func USES_REGS){
Term args[2]; Term args[2];
Functor functor; Functor functor;
double d; double d;
@ -188,7 +188,7 @@ static Term get_linestring(char *func){
c_list = (Term *) calloc(sizeof(Term),n); c_list = (Term *) calloc(sizeof(Term),n);
for ( i = 0; i < n; i++) { for ( i = 0; i < n; i++) {
c_list[i] = get_point(NULL); c_list[i] = get_point(NULL PASS_REGS);
} }
list = MkAtomTerm(Yap_LookupAtom("[]")); list = MkAtomTerm(Yap_LookupAtom("[]"));
@ -241,15 +241,14 @@ static Term get_geometry(uint32 type){
switch(type) { switch(type) {
case WKBPOINT: case WKBPOINT:
return get_point("point"); return get_point("point" PASS_REGS);
case WKBLINESTRING: case WKBLINESTRING:
return get_linestring("linestring"); return get_linestring("linestring");
case WKBPOLYGON: case WKBPOLYGON:
return get_polygon("polygon"); return get_polygon("polygon");
case WKBMULTIPOINT: case WKBMULTIPOINT:
{ {
byte b; uint32 n;
uint32 n, u;
int i; int i;
Functor functor; Functor functor;
Term *c_list; Term *c_list;
@ -264,10 +263,10 @@ static Term get_geometry(uint32 type){
for ( i = 0; i < n; i++ ) { for ( i = 0; i < n; i++ ) {
/* read (and ignore) the byteorder and type */ /* read (and ignore) the byteorder and type */
b = get_inbyteorder(); get_inbyteorder();
u = get_wkbType(); get_wkbType();
c_list[i] = get_point(NULL); c_list[i] = get_point(NULL PASS_REGS);
} }
list = MkAtomTerm(Yap_LookupAtom("[]")); list = MkAtomTerm(Yap_LookupAtom("[]"));
@ -282,8 +281,7 @@ static Term get_geometry(uint32 type){
} }
case WKBMULTILINESTRING: case WKBMULTILINESTRING:
{ {
byte b; uint32 n;
uint32 n, u;
int i; int i;
Functor functor; Functor functor;
Term *c_list; Term *c_list;
@ -298,8 +296,8 @@ static Term get_geometry(uint32 type){
for ( i = 0; i < n; i++ ) { for ( i = 0; i < n; i++ ) {
/* read (and ignore) the byteorder and type */ /* read (and ignore) the byteorder and type */
b = get_inbyteorder(); get_inbyteorder();
u = get_wkbType(); get_wkbType();
c_list[i] = get_linestring(NULL); c_list[i] = get_linestring(NULL);
} }
@ -316,8 +314,7 @@ static Term get_geometry(uint32 type){
} }
case WKBMULTIPOLYGON: case WKBMULTIPOLYGON:
{ {
byte b; uint32 n;
uint32 n, u;
int i; int i;
Functor functor; Functor functor;
Term *c_list; Term *c_list;
@ -332,8 +329,8 @@ static Term get_geometry(uint32 type){
for ( i = 0; i < n; i++ ) { for ( i = 0; i < n; i++ ) {
/* read (and ignore) the byteorder and type */ /* read (and ignore) the byteorder and type */
b = get_inbyteorder(); get_inbyteorder();
u = get_wkbType(); get_wkbType();
c_list[i] = get_polygon(NULL); c_list[i] = get_polygon(NULL);
} }
@ -350,7 +347,6 @@ static Term get_geometry(uint32 type){
} }
case WKBGEOMETRYCOLLECTION: case WKBGEOMETRYCOLLECTION:
{ {
byte b;
uint32 n; uint32 n;
int i; int i;
Functor functor; Functor functor;
@ -365,7 +361,7 @@ static Term get_geometry(uint32 type){
for ( i = 0; i < n; i++ ) { for ( i = 0; i < n; i++ ) {
b = get_inbyteorder(); get_inbyteorder();
c_list[i] = get_geometry(get_wkbType()); c_list[i] = get_geometry(get_wkbType());
} }

View File

@ -34,7 +34,7 @@ double floatval(TERM);
#ifdef __YAP_PROLOG__ #ifdef __YAP_PROLOG__
static inline static inline
#endif #endif
TERM encodefloat1(double); TERM encodefloat1(double USES_REGS);
/* loader.c */ /* loader.c */
SYM_REC_PTR insert(const char *, int, int); SYM_REC_PTR insert(const char *, int, int);
@ -272,7 +272,7 @@ TERM bpx_build_float(double x)
{ {
CACHE_REGS CACHE_REGS
REQUIRE_HEAP(4); REQUIRE_HEAP(4);
return encodefloat1(x); return encodefloat1(x PASS_REGS);
} }
TERM bpx_build_atom(const char *name) TERM bpx_build_atom(const char *name)

View File

@ -128,7 +128,7 @@ double floatval(TERM t)
} }
static inline static inline
TERM encodefloat1(double f) TERM encodefloat1(double f USES_REGS)
{ {
return MkFloatTerm((Float)f); return MkFloatTerm((Float)f);
} }