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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list