Skip to Content.
Sympa Menu

sm-commit - [SM-Commit] GIT changes to master grimoire by Vlad Glagolev (a05e7632ba17e8a27302c9ef1b7e6cff05f0e437)

sm-commit AT lists.ibiblio.org

Subject: Source Mage code commit list

List archive

Chronological Thread  
  • From: Vlad Glagolev <scm AT sourcemage.org>
  • To: sm-commit AT lists.ibiblio.org
  • Subject: [SM-Commit] GIT changes to master grimoire by Vlad Glagolev (a05e7632ba17e8a27302c9ef1b7e6cff05f0e437)
  • Date: Wed, 23 Sep 2009 14:47:46 -0500

GIT changes to master grimoire by Vlad Glagolev <stealth AT sourcemage.org>:

libs/libxslt/DEPENDS | 18 +++----
libs/libxslt/HISTORY | 4 +
libs/libxslt/PRE_BUILD | 4 +
libs/libxslt/locking.patch | 113
+++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 130 insertions(+), 9 deletions(-)

New commits:
commit a05e7632ba17e8a27302c9ef1b7e6cff05f0e437
Author: Vlad Glagolev <stealth AT sourcemage.org>
Commit: Vlad Glagolev <stealth AT sourcemage.org>

libxslt: fixed locking bug and made some clean up in DEPENDS

diff --git a/libs/libxslt/DEPENDS b/libs/libxslt/DEPENDS
index 15a7f69..24ad027 100755
--- a/libs/libxslt/DEPENDS
+++ b/libs/libxslt/DEPENDS
@@ -1,11 +1,11 @@
-depends libxml2 &&
+depends libxml2 &&

-optional_depends python \
- "--with-python" \
- "--without-python" \
- "to build python bindings for libxslt"
+optional_depends python \
+ "--with-python" \
+ "--without-python" \
+ "to build python bindings for libxslt" &&

-optional_depends libgcrypt \
- "--with-libgcrypt" \
- "--without-libgcrypt" \
- "for exslt:crypto extension"
+optional_depends libgcrypt \
+ "--with-crypto" \
+ "--without-crypto" \
+ "for exslt:crypto extension"
diff --git a/libs/libxslt/HISTORY b/libs/libxslt/HISTORY
index 434f2ca..cbf7655 100644
--- a/libs/libxslt/HISTORY
+++ b/libs/libxslt/HISTORY
@@ -1,3 +1,7 @@
+2009-09-23 Vlad Glagolev <stealth AT sourcemage.org>
+ * DEPENDS: fixed crypto flags, cleaned up
+ * PRE_BUILD, locking.patch: added, to fix a locking bug in 1.1.25
+
2009-09-19 Ladislav Hagara <hgr AT vabo.cz>
* DETAILS: 1.1.25

diff --git a/libs/libxslt/PRE_BUILD b/libs/libxslt/PRE_BUILD
new file mode 100755
index 0000000..0e546a9
--- /dev/null
+++ b/libs/libxslt/PRE_BUILD
@@ -0,0 +1,4 @@
+default_pre_build &&
+cd "$SOURCE_DIRECTORY" &&
+
+patch -p0 < "$SPELL_DIRECTORY/locking.patch"
diff --git a/libs/libxslt/locking.patch b/libs/libxslt/locking.patch
new file mode 100644
index 0000000..ade1f0d
--- /dev/null
+++ b/libs/libxslt/locking.patch
@@ -0,0 +1,113 @@
+--- libxslt/extensions.c.orig
++++ libxslt/extensions.c
+@@ -313,8 +313,6 @@ typedef void (*exsltRegisterFunction) (void);
+ * by LIBXSLT_DEFAULT_PLUGINS_PATH() which is determined at
+ * compile time.
+ *
+- * Always called with xsltExtMutex lock taken.
+- *
+ * Returns 0 if successful, -1 in case of error.
+ */
+
+@@ -550,10 +548,14 @@ xsltRegisterExtPrefix(xsltStylesheetPtr style,
+ if (xsltExtensionsHash != NULL) {
+ xsltExtModulePtr module;
+
++ xmlMutexLock(xsltExtMutex);
+ module = xmlHashLookup(xsltExtensionsHash, URI);
++ xmlMutexUnlock(xsltExtMutex);
+ if (NULL == module) {
+ if (!xsltExtModuleRegisterDynamic(URI)) {
++ xmlMutexLock(xsltExtMutex);
+ module = xmlHashLookup(xsltExtensionsHash, URI);
++ xmlMutexUnlock(xsltExtMutex);
+ }
+ }
+ if (module != NULL) {
+@@ -1669,18 +1671,13 @@ xsltExtElementLookup(xsltTransformContextPtr ctxt,
+ if ((name == NULL) || (URI == NULL))
+ return (NULL);
+
+- xmlMutexLock(xsltExtMutex);
+-
+ if ((ctxt != NULL) && (ctxt->extElements != NULL)) {
+ XML_CAST_FPTR(ret) = xmlHashLookup2(ctxt->extElements, name, URI);
+ if (ret != NULL) {
+- xmlMutexUnlock(xsltExtMutex);
+ return(ret);
+ }
+ }
+
+- xmlMutexUnlock(xsltExtMutex);
+-
+ ret = xsltExtModuleElementLookup(name, URI);
+
+ return (ret);
+@@ -1707,19 +1704,23 @@ xsltExtModuleElementLookup(const xmlChar * name,
const xmlChar * URI)
+
+ ext = (xsltExtElementPtr) xmlHashLookup2(xsltElementsHash, name, URI);
+
++ xmlMutexUnlock(xsltExtMutex);
++
+ /*
+ * if function lookup fails, attempt a dynamic load on
+ * supported platforms
+ */
+ if (NULL == ext) {
+ if (!xsltExtModuleRegisterDynamic(URI)) {
++ xmlMutexLock(xsltExtMutex);
++
+ ext = (xsltExtElementPtr)
+ xmlHashLookup2(xsltElementsHash, name, URI);
++
++ xmlMutexUnlock(xsltExtMutex);
+ }
+ }
+
+- xmlMutexUnlock(xsltExtMutex);
+-
+ if (ext == NULL)
+ return (NULL);
+ return (ext->transform);
+@@ -1747,13 +1748,18 @@ xsltExtModuleElementPreComputeLookup(const xmlChar *
name,
+
+ ext = (xsltExtElementPtr) xmlHashLookup2(xsltElementsHash, name, URI);
+
++ xmlMutexUnlock(xsltExtMutex);
++
+ if (ext == NULL) {
+ if (!xsltExtModuleRegisterDynamic(URI)) {
++ xmlMutexLock(xsltExtMutex);
++
+ ext = (xsltExtElementPtr)
+ xmlHashLookup2(xsltElementsHash, name, URI);
++
++ xmlMutexUnlock(xsltExtMutex);
+ }
+ }
+- xmlMutexUnlock(xsltExtMutex);
+
+ if (ext == NULL)
+ return (NULL);
+@@ -1856,15 +1862,19 @@ xsltExtModuleTopLevelLookup(const xmlChar * name,
const xmlChar * URI)
+
+ XML_CAST_FPTR(ret) = xmlHashLookup2(xsltTopLevelsHash, name, URI);
+
++ xmlMutexUnlock(xsltExtMutex);
++
+ /* if lookup fails, attempt a dynamic load on supported platforms */
+ if (NULL == ret) {
+ if (!xsltExtModuleRegisterDynamic(URI)) {
++ xmlMutexLock(xsltExtMutex);
++
+ XML_CAST_FPTR(ret) = xmlHashLookup2(xsltTopLevelsHash, name,
URI);
++
++ xmlMutexUnlock(xsltExtMutex);
+ }
+ }
+
+- xmlMutexUnlock(xsltExtMutex);
+-
+ return (ret);
+ }
+



  • [SM-Commit] GIT changes to master grimoire by Vlad Glagolev (a05e7632ba17e8a27302c9ef1b7e6cff05f0e437), Vlad Glagolev, 09/23/2009

Archive powered by MHonArc 2.6.24.

Top of Page