Changeset: 7b5567cc9e68 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7b5567cc9e68 Modified Files: gdk/gdk_system.c sql/test/Tests/systemfunctions.stable.out sql/test/Tests/systemfunctions.stable.out.int128 sql/test/leaks/Tests/check0.stable.out sql/test/leaks/Tests/check0.stable.out.int128 sql/test/leaks/Tests/check1.stable.out sql/test/leaks/Tests/check1.stable.out.int128 sql/test/leaks/Tests/check2.stable.out sql/test/leaks/Tests/check2.stable.out.int128 sql/test/leaks/Tests/check3.stable.out sql/test/leaks/Tests/check3.stable.out.int128 sql/test/leaks/Tests/check4.stable.out sql/test/leaks/Tests/check4.stable.out.int128 sql/test/leaks/Tests/check5.stable.out sql/test/leaks/Tests/check5.stable.out.int128 tools/merovingian/utils/utils.c Branch: default Log Message:
Merge with Jun2016 branch. diffs (81 lines): diff --git a/gdk/gdk_system.c b/gdk/gdk_system.c --- a/gdk/gdk_system.c +++ b/gdk/gdk_system.c @@ -237,18 +237,25 @@ void join_detached_threads(void) { struct winthread *w; + int waited; - EnterCriticalSection(&winthread_cs); - while (winthreads) { - w = winthreads; - winthreads = w->next; + do { + waited = 0; + EnterCriticalSection(&winthread_cs); + for (w = winthreads; w; w = w->next) { + if ((w->flags & (DETACHED | WAITING)) == DETACHED) { + w->flags |= WAITING; + LeaveCriticalSection(&winthread_cs); + WaitForSingleObject(w->hdl, INFINITE); + CloseHandle(w->hdl); + rm_winthread(w); + waited = 1; + EnterCriticalSection(&winthread_cs); + break; + } + } LeaveCriticalSection(&winthread_cs); - WaitForSingleObject(w->hdl, INFINITE); - CloseHandle(w->hdl); - free(w); - EnterCriticalSection(&winthread_cs); - } - LeaveCriticalSection(&winthread_cs); + } while (waited); } int diff --git a/sql/test/Tests/systemfunctions.stable.out b/sql/test/Tests/systemfunctions.stable.out --- a/sql/test/Tests/systemfunctions.stable.out +++ b/sql/test/Tests/systemfunctions.stable.out @@ -690,7 +690,7 @@ Ready. [ "sys", "gethost", 1, "url", "" ] [ "sys", "getport", 0, "clob", "create function getport(theurl url) returns string\n external name url.\"getPort\";" ] [ "sys", "getport", 1, "url", "" ] -[ "sys", "getproj4", 0, "clob", "create function getproj4(srid_in integer) returns string \nbegin\n return select proj4text from spatial_ref_sys where srid=srid_in; \nend;" ] +[ "sys", "getproj4", 0, "clob", "create function getproj4(srid_in integer) returns string\nbegin\n return select proj4text from spatial_ref_sys where srid=srid_in;\nend;" ] [ "sys", "getproj4", 1, "int", "" ] [ "sys", "getprotocol", 0, "clob", "create function getprotocol(theurl url) returns string\n external name url.\"getProtocol\";" ] [ "sys", "getprotocol", 1, "url", "" ] @@ -4012,7 +4012,7 @@ Ready. [ "sys", "st_touches", 0, "boolean", "create function st_touches(geom1 geometry, geom2 geometry) returns boolean external name geom.\"Touches\";" ] [ "sys", "st_touches", 1, "geometry", "" ] [ "sys", "st_touches", 2, "geometry", "" ] -[ "sys", "st_transform", 0, "geometry", "create function st_transform(geom geometry, srid integer) returns geometry\nbegin\n declare srid_src integer;\n declare proj4_src string;\n declare proj4_dest string;\n select st_srid(geom) into srid_src;\n select getproj4(srid_src) into proj4_src;\n select getproj4(srid) into proj4_dest;\n if proj4_src is null then\n return select internaltransform(geom, srid_src, srid, 'null', proj4_dest); \n else\n if proj4_dest is null then\n return select internaltransform(geom, srid_src, srid, proj4_src, 'null'); \n else\n return select internaltransform(geom, srid_src, srid, proj4_src, proj4_dest);\n end if; \n end if;\nend;" ] +[ "sys", "st_transform", 0, "geometry", "create function st_transform(geom geometry, srid integer) returns geometry\nbegin\n declare srid_src integer;\n declare proj4_src string;\n declare proj4_dest string;\n select st_srid(geom) into srid_src;\n select getproj4(srid_src) into proj4_src;\n select getproj4(srid) into proj4_dest;\n if proj4_src is null then\n return select internaltransform(geom, srid_src, srid, 'null', proj4_dest);\n else\n if proj4_dest is null then\n return select internaltransform(geom, srid_src, srid, proj4_src, 'null');\n else\n return select internaltransform(geom, srid_src, srid, proj4_src, proj4_dest);\n end if;\n end if;\nend;" ] [ "sys", "st_transform", 1, "geometry", "" ] [ "sys", "st_transform", 2, "int", "" ] [ "sys", "st_translate", 0, "geometry", "create function st_translate(geom geometry, dx double, dy double) returns geometry external name geom.\"Translate\";" ] diff --git a/sql/test/Tests/systemfunctions.stable.out.int128 b/sql/test/Tests/systemfunctions.stable.out.int128 --- a/sql/test/Tests/systemfunctions.stable.out.int128 +++ b/sql/test/Tests/systemfunctions.stable.out.int128 @@ -734,7 +734,7 @@ Ready. [ "sys", "gethost", 1, "url", "" ] [ "sys", "getport", 0, "clob", "create function getport(theurl url) returns string\n external name url.\"getPort\";" ] [ "sys", "getport", 1, "url", "" ] -[ "sys", "getproj4", 0, "clob", "create function getproj4(srid_in integer) returns string \nbegin\n return select proj4text from spatial_ref_sys where srid=srid_in; \nend;" ] +[ "sys", "getproj4", 0, "clob", "create function getproj4(srid_in integer) returns string\nbegin\n return select proj4text from spatial_ref_sys where srid=srid_in;\nend;" ] [ "sys", "getproj4", 1, "int", "" ] [ "sys", "getprotocol", 0, "clob", "create function getprotocol(theurl url) returns string\n external name url.\"getProtocol\";" ] [ "sys", "getprotocol", 1, "url", "" ] @@ -4526,7 +4526,7 @@ Ready. [ "sys", "st_touches", 0, "boolean", "create function st_touches(geom1 geometry, geom2 geometry) returns boolean external name geom.\"Touches\";" ] [ "sys", "st_touches", 1, "geometry", "" ] [ "sys", "st_touches", 2, "geometry", "" ] -[ "sys", "st_transform", 0, "geometry", "create function st_transform(geom geometry, srid integer) returns geometry\nbegin\n declare srid_src integer;\n declare proj4_src string;\n declare proj4_dest string;\n select st_srid(geom) into srid_src;\n select getproj4(srid_src) into proj4_src;\n select getproj4(srid) into proj4_dest;\n if proj4_src is null then\n return select internaltransform(geom, srid_src, srid, 'null', proj4_dest); \n else\n if proj4_dest is null then\n return select internaltransform(geom, srid_src, srid, proj4_src, 'null'); \n else\n return select internaltransform(geom, srid_src, srid, proj4_src, proj4_dest);\n end if; \n end if;\nend;" ] +[ "sys", "st_transform", 0, "geometry", "create function st_transform(geom geometry, srid integer) returns geometry\nbegin\n declare srid_src integer;\n declare proj4_src string;\n declare proj4_dest string;\n select st_srid(geom) into srid_src;\n select getproj4(srid_src) into proj4_src;\n select getproj4(srid) into proj4_dest;\n if proj4_src is null then\n return select internaltransform(geom, srid_src, srid, 'null', proj4_dest);\n else\n if proj4_dest is null then\n return select internaltransform(geom, srid_src, srid, proj4_src, 'null');\n else\n return select internaltransform(geom, srid_src, srid, proj4_src, proj4_dest);\n end if;\n end if;\nend;" ] [ "sys", "st_transform", 1, "geometry", "" ] [ "sys", "st_transform", 2, "int", "" ] [ "sys", "st_translate", 0, "geometry", "create function st_translate(geom geometry, dx double, dy double) returns geometry external name geom.\"Translate\";" ] _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list