summaryrefslogtreecommitdiff
path: root/lang/parrot/patches
diff options
context:
space:
mode:
authorhe <he>2010-02-18 07:59:38 +0000
committerhe <he>2010-02-18 07:59:38 +0000
commitc0dfdd0ce80c3b86cdb02d8f878cd77309f06214 (patch)
treea29a0e64cf736cf836db4faef392a9266e3b3900 /lang/parrot/patches
parent47db9c9ad681169ff2821c70f7f377626479a514 (diff)
downloadpkgsrc-c0dfdd0ce80c3b86cdb02d8f878cd77309f06214.tar.gz
Update parrot from version 2.0.0 to 2.1.0.
Pkgsrc changes: o Adapt patch to work around dl-handle re-use to eliminate warnings o Adapt PLIST to new contents Upstream changes: - Core changes + GC performance and encapsulation were greatly improved. + PMC freeze refactored. + More Makefile and build improvements. - API Changes + The Array PMC was removed. + Several deprecated vtables were removed. + The OrderedHash PMC was substantialy improved. - Platforms + Packaging improvements on some operating systems. - Tools + Some cases in pbc_merge are now handled. + Improvements were made to the dependency checker. + New tool nativecall.pir added.
Diffstat (limited to 'lang/parrot/patches')
-rw-r--r--lang/parrot/patches/patch-ak22
1 files changed, 13 insertions, 9 deletions
diff --git a/lang/parrot/patches/patch-ak b/lang/parrot/patches/patch-ak
index ecba1e6f8f6..65e5dd4df7d 100644
--- a/lang/parrot/patches/patch-ak
+++ b/lang/parrot/patches/patch-ak
@@ -1,4 +1,4 @@
-$NetBSD: patch-ak,v 1.1 2009/12/09 09:23:51 he Exp $
+$NetBSD: patch-ak,v 1.2 2010/02/18 07:59:38 he Exp $
Prevent problem exposed by "library cloning", where the dlopen()-returned
handle is copied, causing dlclose() to be called twice with the same handle,
@@ -7,9 +7,9 @@ http://trac.parrot.org/parrot/ticket/1340.
Index: config/gen/platform/generic/dl.c
===================================================================
---- config/gen/platform/generic/dl.c (revision 42823)
-+++ config/gen/platform/generic/dl.c (working copy)
-@@ -22,11 +22,69 @@
+--- config/gen/platform/generic/dl.c.orig 2009-12-12 01:16:58.000000000 +0100
++++ config/gen/platform/generic/dl.c
+@@ -22,11 +22,69 @@ Dynlib stuff
*/
#ifdef PARROT_HAS_HEADER_DLFCN
@@ -34,7 +34,7 @@ Index: config/gen/platform/generic/dl.c
+{
+ struct handle_entry *e;
+
-+ e = malloc(sizeof(struct handle_entry));
++ e = (struct handle_entry *) malloc(sizeof(struct handle_entry));
+ if (!e) { return; }
+ e->handle = handle;
+ e->next = handle_list;
@@ -79,7 +79,7 @@ Index: config/gen/platform/generic/dl.c
/*
=item C<void * Parrot_dlopen(const char *filename)>
-@@ -39,7 +97,11 @@
+@@ -39,7 +97,11 @@ void *
Parrot_dlopen(const char *filename)
{
#ifdef PARROT_HAS_HEADER_DLFCN
@@ -92,11 +92,13 @@ Index: config/gen/platform/generic/dl.c
#else
return 0;
#endif
-@@ -93,7 +155,13 @@
+@@ -93,10 +155,15 @@ int
Parrot_dlclose(void *handle)
{
#ifdef PARROT_HAS_HEADER_DLFCN
- return dlclose(handle);
+-#else
+- return -1;
+ int rv;
+
+ if (find_handle_entry(handle)) {
@@ -104,6 +106,8 @@ Index: config/gen/platform/generic/dl.c
+ rv = dlclose(handle);
+ return rv;
+ }
- #else
- return -1;
#endif
++ return -1;
+ }
+
+ /*