Sat Aug 1 16:22:26 2009 UTC ()
Hack around silly behavior that unlocks every freshly created pthread
mutex. Fixes PR 35261.


(dholland)
diff -r1.17 -r1.18 pkgsrc/cad/electric/Makefile
diff -r1.4 -r1.5 pkgsrc/cad/electric/distinfo
diff -r1.2 -r1.3 pkgsrc/cad/electric/patches/patch-ac
diff -r0 -r1.1 pkgsrc/cad/electric/patches/patch-ad
diff -r0 -r1.1 pkgsrc/cad/electric/patches/patch-ae

cvs diff -r1.17 -r1.18 pkgsrc/cad/electric/Makefile (expand / switch to context diff)
--- pkgsrc/cad/electric/Makefile 2009/07/08 15:35:48 1.17
+++ pkgsrc/cad/electric/Makefile 2009/08/01 16:22:25 1.18
@@ -1,8 +1,8 @@
-# $NetBSD: Makefile,v 1.17 2009/07/08 15:35:48 joerg Exp $
+# $NetBSD: Makefile,v 1.18 2009/08/01 16:22:25 dholland Exp $
 #
 
 DISTNAME=	electric-7.00
-PKGREVISION=	2
+PKGREVISION=	3
 CATEGORIES=	cad
 MASTER_SITES=	${MASTER_SITE_GNU:=electric/}
 

cvs diff -r1.4 -r1.5 pkgsrc/cad/electric/distinfo (expand / switch to context diff)
--- pkgsrc/cad/electric/distinfo 2005/12/28 14:17:57 1.4
+++ pkgsrc/cad/electric/distinfo 2009/08/01 16:22:25 1.5
@@ -1,8 +1,10 @@
-$NetBSD: distinfo,v 1.4 2005/12/28 14:17:57 joerg Exp $
+$NetBSD: distinfo,v 1.5 2009/08/01 16:22:25 dholland Exp $
 
 SHA1 (electric-7.00.tar.gz) = 782652b078e81060928eadfae364cd74da07788e
 RMD160 (electric-7.00.tar.gz) = c57a2e0a32e40d435e125cad6dfc5c1b98e9067b
 Size (electric-7.00.tar.gz) = 4474722 bytes
 SHA1 (patch-aa) = ca3aa5c28eef818dce61055daeedc1b7d2e9a8a7
 SHA1 (patch-ab) = f9c648dda476f1e7cd3c3e875236b76198fa317b
-SHA1 (patch-ac) = f599a3440bb1a6402280fe4129361c13cabd38f8
+SHA1 (patch-ac) = fac49d88feab792ff665686e9e4fc8a29caab471
+SHA1 (patch-ad) = 6be5c47ead4bf023ef6215d7bce496a2f7abb5b0
+SHA1 (patch-ae) = 095e56c085ae77d0615134b070082f6599a95280

cvs diff -r1.2 -r1.3 pkgsrc/cad/electric/patches/patch-ac (expand / switch to context diff)
--- pkgsrc/cad/electric/patches/patch-ac 2005/12/28 14:17:57 1.2
+++ pkgsrc/cad/electric/patches/patch-ac 2009/08/01 16:22:26 1.3
@@ -1,7 +1,11 @@
-$NetBSD: patch-ac,v 1.2 2005/12/28 14:17:57 joerg Exp $
+$NetBSD: patch-ac,v 1.3 2009/08/01 16:22:26 dholland Exp $
 
---- src/graph/graphunixx11.c.orig	2004-07-16 01:59:53.000000000 +0000
-+++ src/graph/graphunixx11.c
+Get number of processors for NetBSD/Dragonfly.
+
+Hack around silly behavior that unlocks every newly created pthread mutex.
+
+--- src/graph/graphunixx11.c.orig	2004-07-15 21:59:53.000000000 -0400
++++ src/graph/graphunixx11.c	2009-08-01 12:17:39.000000000 -0400
 @@ -3085,11 +3085,30 @@ void ewait(INTBIG process)
  /*
   * Routine to return the number of processors on this machine.
@@ -33,3 +37,31 @@
  	return(numproc);
  }
  
+@@ -3168,6 +3187,27 @@ void emutexunlock(void *vmutex)
+ }
+ 
+ /*
++ * Routine that ensures mutual-exclusion object "vmutex" is unlocked.
++ */
++void emutexensureunlocked(void *vmutex)
++{
++#ifdef HAVE_PTHREAD
++	pthread_mutex_t *mutex;
++
++	mutex = (pthread_mutex_t *)vmutex;
++	if (pthread_mutex_trylock(mutex) == 0)
++	{
++		pthread_mutex_unlock(mutex);
++	}
++#else
++	mutex_t *mutexid;
++
++	mutexid = (mutex_t *)vmutex;
++	mutex_unlock(mutexid);
++#endif
++}
++
++/*
+  * Routine to determine the list of printers and return it.
+  * The list terminates with a zero.
+  */

File Added: pkgsrc/cad/electric/patches/patch-ad
$NetBSD: patch-ad,v 1.1 2009/08/01 16:22:26 dholland Exp $

Hack around silly behavior that unlocks every newly created pthread mutex.

--- src/include/global.h.orig	2009-08-01 12:18:08.000000000 -0400
+++ src/include/global.h	2009-08-01 12:18:21.000000000 -0400
@@ -2404,6 +2404,7 @@ void         enewthread(void* (*function
 void        *emakemutex(void);
 void         emutexlock(void *vmutex);
 void         emutexunlock(void *vmutex);
+void         emutexensureunlocked(void *vmutex);
 CHAR       **eprinterlist(void);
 void         flushscreen(void);
 void         exitprogram(void);

File Added: pkgsrc/cad/electric/patches/patch-ae
$NetBSD: patch-ae,v 1.1 2009/08/01 16:22:26 dholland Exp $

Hack around silly behavior that unlocks every newly created pthread mutex.

--- src/db/dbcontrol.c.orig	2009-08-01 12:21:37.000000000 -0400
+++ src/db/dbcontrol.c	2009-08-01 12:22:18.000000000 -0400
@@ -499,6 +499,6 @@ BOOLEAN ensurevalidmutex(void **mutex, B
 			return(TRUE);
 		}
 	}
-	emutexunlock(*mutex);
+	emutexensureunlocked(*mutex);
 	return(FALSE);
 }