]> git.vpit.fr Git - perl/modules/Variable-Magic.git/log
perl/modules/Variable-Magic.git
13 years agoReorder some code
Vincent Pit [Wed, 26 Oct 2011 15:57:32 +0000 (17:57 +0200)]
Reorder some code

13 years agoRename vmg_wizard_* to vmg_wizard_sv_* and {MGWIZ,mgwiz}_* to vmg_wizard_*
Vincent Pit [Wed, 26 Oct 2011 15:50:13 +0000 (17:50 +0200)]
Rename vmg_wizard_* to vmg_wizard_sv_* and {MGWIZ,mgwiz}_* to vmg_wizard_*

13 years agoClone wizard objects through dup magic
Vincent Pit [Wed, 26 Oct 2011 14:52:27 +0000 (16:52 +0200)]
Clone wizard objects through dup magic

ptable.h is no longer needed.

13 years agoClean up threads tests a bit
Vincent Pit [Wed, 26 Oct 2011 14:12:20 +0000 (16:12 +0200)]
Clean up threads tests a bit

13 years agoShare the vtables with threaded perls
Vincent Pit [Wed, 26 Oct 2011 13:37:55 +0000 (15:37 +0200)]
Share the vtables with threaded perls

When a magical variable is cloned into a new thread, the associated vtables
aren't cloned by mg_dup(), but simply shared. This means that if a wizard
is casted upon a variable in the main interpreter, then a thread is created,
then the wizard is destroyed, and then the cloned variant of the magical
variable is manipulated, perl can no longer access the vtable (it was freed
when the wizard was destroyed) and memory misreads happen.

To solve this, the only solution is to make the vtables associated with
wizards shared and reference-counted.

13 years agoWrap MUTEX_{LOCK,UNLOCK} in macros so can we don't have to #ifdef them
Vincent Pit [Wed, 26 Oct 2011 10:02:11 +0000 (12:02 +0200)]
Wrap MUTEX_{LOCK,UNLOCK} in macros so can we don't have to #ifdef them

13 years agoMGf_COPY and MGf_DUP should always be set for the perls we consider
Vincent Pit [Wed, 26 Oct 2011 09:40:16 +0000 (11:40 +0200)]
MGf_COPY and MGf_DUP should always be set for the perls we consider

13 years agoAbstract the MGWIZ creation into a new vmg_mgwiz_alloc() function
Vincent Pit [Tue, 25 Oct 2011 22:32:18 +0000 (00:32 +0200)]
Abstract the MGWIZ creation into a new vmg_mgwiz_alloc() function

13 years agoPass the 'data' callback after the 'op_info' flag when calling _wizard()
Vincent Pit [Tue, 25 Oct 2011 22:25:38 +0000 (00:25 +0200)]
Pass the 'data' callback after the 'op_info' flag when calling _wizard()

13 years agoThreads tests may not be able to spawn all the threads
Vincent Pit [Mon, 24 Oct 2011 19:57:55 +0000 (21:57 +0200)]
Threads tests may not be able to spawn all the threads

To work around this :
- move all the threads boilerplate to a new helper test module ;
- capture the warnings/errors that threads->create may throw and reprint
them properly as diagnostics ;
- don't set a plan in threads tests.

13 years agoRemove trailing whitespace
Vincent Pit [Mon, 24 Oct 2011 19:42:20 +0000 (21:42 +0200)]
Remove trailing whitespace

13 years agoMake sure code examples fit in a 80 columns terminal
Vincent Pit [Sun, 23 Oct 2011 15:31:20 +0000 (17:31 +0200)]
Make sure code examples fit in a 80 columns terminal

13 years agoPreserve the PATH environment variable when running a sub-perl on cygwin
Vincent Pit [Sun, 23 Oct 2011 14:55:07 +0000 (16:55 +0200)]
Preserve the PATH environment variable when running a sub-perl on cygwin

13 years agoSilence an "unused" compiler warning
Vincent Pit [Mon, 5 Sep 2011 17:46:40 +0000 (19:46 +0200)]
Silence an "unused" compiler warning

13 years agoTweak some optional module loading in tests
Vincent Pit [Sun, 4 Sep 2011 21:32:06 +0000 (23:32 +0200)]
Tweak some optional module loading in tests

13 years agoAdd META.json
Vincent Pit [Wed, 24 Aug 2011 17:42:12 +0000 (19:42 +0200)]
Add META.json

13 years agoEncode the README file in UTF-8
Vincent Pit [Wed, 24 Aug 2011 12:52:54 +0000 (14:52 +0200)]
Encode the README file in UTF-8

13 years agoReplace $] by "$]"
Vincent Pit [Sun, 7 Aug 2011 16:17:22 +0000 (18:17 +0200)]
Replace $] by "$]"

An old bug could cause $] to be initialized to a wrong decimal value.
Since its stringified value was always right, we use it instead.

Occurences of $^V were also replaced by $].

13 years agoIgnore MYMETA.json
Vincent Pit [Sun, 7 Aug 2011 16:05:30 +0000 (18:05 +0200)]
Ignore MYMETA.json

13 years agoUpdate vmg_opclass() for perl 5.15
Vincent Pit [Sun, 7 Aug 2011 16:04:39 +0000 (18:04 +0200)]
Update vmg_opclass() for perl 5.15

Even if magic is no longer called by the aelem(fast).

13 years agoThis is 0.46 v0.46
Vincent Pit [Sun, 23 Jan 2011 16:44:38 +0000 (17:44 +0100)]
This is 0.46

13 years agoSwitch to qw<>
Vincent Pit [Wed, 19 Jan 2011 17:45:36 +0000 (18:45 +0100)]
Switch to qw<>

13 years agoUpdate magical flags after dispelling magic rt64866
Vincent Pit [Wed, 19 Jan 2011 17:29:15 +0000 (18:29 +0100)]
Update magical flags after dispelling magic

This fixes RT #64866.

13 years agoBump copyright year
Vincent Pit [Tue, 18 Jan 2011 12:33:36 +0000 (13:33 +0100)]
Bump copyright year

13 years agoTighten the scope of two variables unused on 5.8
Vincent Pit [Tue, 18 Jan 2011 12:33:16 +0000 (13:33 +0100)]
Tighten the scope of two variables unused on 5.8

14 years agoThis is 0.45 v0.45
Vincent Pit [Sun, 21 Nov 2010 23:10:30 +0000 (00:10 +0100)]
This is 0.45

14 years agoA terser way to display versions for modules used in tests
Vincent Pit [Sun, 21 Nov 2010 22:56:26 +0000 (23:56 +0100)]
A terser way to display versions for modules used in tests

14 years agoOnly use Capture::Tiny when it is working on a simple example
Vincent Pit [Sun, 21 Nov 2010 22:43:16 +0000 (23:43 +0100)]
Only use Capture::Tiny when it is working on a simple example

14 years agoA bare glob that isn't part of a fetch doesn't call get magic anymore in 5.13.7
Vincent Pit [Sun, 21 Nov 2010 13:43:04 +0000 (14:43 +0100)]
A bare glob that isn't part of a fetch doesn't call get magic anymore in 5.13.7

14 years agoAdd more glob tests
Vincent Pit [Sun, 21 Nov 2010 13:42:06 +0000 (14:42 +0100)]
Add more glob tests

14 years agoWording fix
Vincent Pit [Sun, 21 Nov 2010 13:23:09 +0000 (14:23 +0100)]
Wording fix

14 years agoGive a saner default to pPTBLMS
Vincent Pit [Thu, 28 Oct 2010 22:20:04 +0000 (00:20 +0200)]
Give a saner default to pPTBLMS

This silences a compiler warning.

14 years agoSkip NULL values when walking a table
Vincent Pit [Thu, 28 Oct 2010 22:19:32 +0000 (00:19 +0200)]
Skip NULL values when walking a table

ptable_fetch already returns NULL for nonexistent entries, so NULL can't
possibly have any other meaning than "this node is not currently in use".

14 years agoAdd ptable_delete to ptable.h
Vincent Pit [Thu, 28 Oct 2010 22:18:08 +0000 (00:18 +0200)]
Add ptable_delete to ptable.h

14 years agoExplicitely state that C++ compilers aren't supported
Vincent Pit [Sat, 16 Oct 2010 12:34:04 +0000 (14:34 +0200)]
Explicitely state that C++ compilers aren't supported

14 years agoIgnore MYMETA.yml
Vincent Pit [Sun, 3 Oct 2010 00:22:17 +0000 (02:22 +0200)]
Ignore MYMETA.yml

14 years agoClarify minimum perl 5.10.0 requirement for hash magic
Peter Rabbitson [Sat, 25 Sep 2010 18:18:36 +0000 (20:18 +0200)]
Clarify minimum perl 5.10.0 requirement for hash magic

14 years agoThis is 0.44 v0.44
Vincent Pit [Fri, 24 Sep 2010 19:10:06 +0000 (21:10 +0200)]
This is 0.44

14 years agoCorrectly propagate exceptions from _wizard()
Vincent Pit [Fri, 24 Sep 2010 18:00:03 +0000 (20:00 +0200)]
Correctly propagate exceptions from _wizard()

14 years agoOnly load Carp.pm when throwing an error
Vincent Pit [Fri, 24 Sep 2010 17:59:24 +0000 (19:59 +0200)]
Only load Carp.pm when throwing an error

14 years agoDescribe why we don't have to guard against PL_dirty in vmg_mgwiz_free()
Vincent Pit [Fri, 24 Sep 2010 17:08:21 +0000 (19:08 +0200)]
Describe why we don't have to guard against PL_dirty in vmg_mgwiz_free()

14 years agoForce threads tests with the PERL_VARIABLE_MAGIC_TEST_THREADS environment variable
Vincent Pit [Fri, 24 Sep 2010 16:10:23 +0000 (18:10 +0200)]
Force threads tests with the PERL_VARIABLE_MAGIC_TEST_THREADS environment variable

14 years agoSkip threads tests unless perl version is 5.13.4 or greater
Vincent Pit [Fri, 24 Sep 2010 15:58:29 +0000 (17:58 +0200)]
Skip threads tests unless perl version is 5.13.4 or greater

There was a long standing bug in the handling of GV <-> CV double linkage
that could (and explicitely did with a poisonous perl) cause segfaults at
thread destruction. It got fixed by Dave in commit 803f274 which went in
5.13.3, but the fix was amended for 5.13.4 in commit 09aad8f. Since it's
not really fair for the user to not be able to install the module because
of this, we skip the threads tests unless perl is at least 5.13.4.

14 years agoRemove the patchlevel test
Vincent Pit [Thu, 23 Sep 2010 21:58:40 +0000 (23:58 +0200)]
Remove the patchlevel test

Commit d29a774d106d145036eda849ab57f42410100008 removed the only place it
was used, and perl left perforce almost three years ago.

14 years agoRemove the test for non-released perl 5.11.0
Vincent Pit [Thu, 23 Sep 2010 21:55:16 +0000 (23:55 +0200)]
Remove the test for non-released perl 5.11.0

Who would be crazy enough to still use them? And the test seems to break
with some git checkouts.

14 years agoForce linking against the perl dll when using gcc 3.4 on Windows
Vincent Pit [Thu, 23 Sep 2010 16:52:42 +0000 (18:52 +0200)]
Force linking against the perl dll when using gcc 3.4 on Windows

When a Windows perl links an XS shared object to an import library using
gcc/g++ version 3.4.x, strange breakage happens at load time because the
mutex-related symbols seems not to be reachable. This situation happens
especially for AS perl and the default compiler suite it installs.

We fix this by forcing g++ to link against the dll instead, which should
be in the same directory as the perl executable (at least for AS perl).

This (should) fix RT #51483.

14 years agoClarify some logic in Makefile.PL
Vincent Pit [Thu, 23 Sep 2010 14:45:12 +0000 (16:45 +0200)]
Clarify some logic in Makefile.PL

14 years agoSvREFCNT_dec already checks if the SV is non null
Vincent Pit [Thu, 19 Aug 2010 10:47:16 +0000 (12:47 +0200)]
SvREFCNT_dec already checks if the SV is non null

14 years agoThis is 0.43 v0.43
Vincent Pit [Fri, 25 Jun 2010 23:35:32 +0000 (01:35 +0200)]
This is 0.43

14 years agoMore control tests
Vincent Pit [Fri, 25 Jun 2010 23:10:43 +0000 (01:10 +0200)]
More control tests

14 years agoPrettify the constants export list
Vincent Pit [Fri, 25 Jun 2010 20:31:57 +0000 (22:31 +0200)]
Prettify the constants export list

14 years ago5.13.2 calls get magic on globs
Vincent Pit [Fri, 25 Jun 2010 20:30:18 +0000 (22:30 +0200)]
5.13.2 calls get magic on globs

Add the new compatibility macro VMG_COMPAT_GLOB_GET to reflect this change.

14 years agoFix CLONE_PARAMS struct initialization for perl 5.13.2
Vincent Pit [Fri, 25 Jun 2010 20:16:50 +0000 (22:16 +0200)]
Fix CLONE_PARAMS struct initialization for perl 5.13.2

14 years agoAlways use a safe version of call_sv()
Vincent Pit [Fri, 25 Jun 2010 20:05:22 +0000 (22:05 +0200)]
Always use a safe version of call_sv()

All the relevant code has been factored out of vmg_cb_free() into a new
vmg_call_sv() function.

14 years agoException propagation fixes
Vincent Pit [Fri, 25 Jun 2010 18:34:14 +0000 (20:34 +0200)]
Exception propagation fixes

First, make sure that exceptions thrown in a free callback at the end of a
regular block are propagated.

Second, prevent duplication of error messages when dieing in a free callback
at BEGIN time.

14 years agoThis is 0.42 v0.42
Vincent Pit [Wed, 19 May 2010 00:13:23 +0000 (02:13 +0200)]
This is 0.42

14 years agoFix tests for perl 5.13
Vincent Pit [Tue, 18 May 2010 23:46:47 +0000 (01:46 +0200)]
Fix tests for perl 5.13

14 years agoFix t/18-opinfo.t failures with perl 5.13
Vincent Pit [Tue, 18 May 2010 22:27:59 +0000 (00:27 +0200)]
Fix t/18-opinfo.t failures with perl 5.13

14 years agoComplete coverage of the len callback
Vincent Pit [Sat, 24 Apr 2010 21:46:47 +0000 (23:46 +0200)]
Complete coverage of the len callback

14 years agoImprove op_info coverage
Vincent Pit [Sat, 24 Apr 2010 21:01:49 +0000 (23:01 +0200)]
Improve op_info coverage

14 years agoThis is 0.41 v0.41
Vincent Pit [Mon, 15 Mar 2010 17:28:47 +0000 (18:28 +0100)]
This is 0.41

14 years agoCompatibility fix for 5.12.0
Vincent Pit [Mon, 15 Mar 2010 17:22:47 +0000 (18:22 +0100)]
Compatibility fix for 5.12.0

14 years agoA few doc corrections
Shlomi Fish [Sat, 6 Mar 2010 00:32:39 +0000 (01:32 +0100)]
A few doc corrections

14 years agoTune the userdata example
Vincent Pit [Tue, 23 Feb 2010 13:42:19 +0000 (14:42 +0100)]
Tune the userdata example

14 years agoCorrectly propagate the errors thrown when variable destruction happens at compile...
Vincent Pit [Wed, 13 Jan 2010 01:07:57 +0000 (02:07 +0100)]
Correctly propagate the errors thrown when variable destruction happens at compile-time

14 years agoThis is 0.40 v0.40
Vincent Pit [Wed, 6 Jan 2010 23:16:43 +0000 (00:16 +0100)]
This is 0.40

14 years agoIndentation
Vincent Pit [Wed, 6 Jan 2010 22:58:37 +0000 (23:58 +0100)]
Indentation

14 years agoBump copyright year
Vincent Pit [Wed, 6 Jan 2010 22:57:03 +0000 (23:57 +0100)]
Bump copyright year

14 years agoUse SvREFCNT_inc_simple_void() whenever possible
Vincent Pit [Wed, 6 Jan 2010 22:54:49 +0000 (23:54 +0100)]
Use SvREFCNT_inc_simple_void() whenever possible

14 years agoUse SvRV_const() whenever possible
Vincent Pit [Wed, 6 Jan 2010 22:48:11 +0000 (23:48 +0100)]
Use SvRV_const() whenever possible

14 years agoSvPV_const is only available since 5.9.3
Vincent Pit [Mon, 28 Dec 2009 23:01:25 +0000 (00:01 +0100)]
SvPV_const is only available since 5.9.3

14 years agoCast the op_info value before applying bit shifts
Vincent Pit [Mon, 28 Dec 2009 22:56:45 +0000 (23:56 +0100)]
Cast the op_info value before applying bit shifts

Also move the opinfo member before the uvar one in the MGWIZ struct, as
it's used more frequently.

14 years agoUse size_t as the index type in the pointer table
Vincent Pit [Mon, 28 Dec 2009 22:13:22 +0000 (23:13 +0100)]
Use size_t as the index type in the pointer table

14 years agoFix expected constness for utf8_length() arguments
Vincent Pit [Mon, 28 Dec 2009 21:40:08 +0000 (22:40 +0100)]
Fix expected constness for utf8_length() arguments

14 years agoFix type coercions on values returned from callbacks
Vincent Pit [Mon, 28 Dec 2009 18:59:39 +0000 (19:59 +0100)]
Fix type coercions on values returned from callbacks

14 years agocall_sv() ought to take an I32
Vincent Pit [Mon, 28 Dec 2009 18:35:07 +0000 (19:35 +0100)]
call_sv() ought to take an I32

14 years agoExplicitely cap the op_info parameter to 255
Vincent Pit [Mon, 28 Dec 2009 18:25:11 +0000 (19:25 +0100)]
Explicitely cap the op_info parameter to 255

14 years agoWizard ids are IV, not UV
Vincent Pit [Mon, 28 Dec 2009 18:19:31 +0000 (19:19 +0100)]
Wizard ids are IV, not UV

14 years agoFix memory miswrite when passing data arguments to cast()
Vincent Pit [Mon, 28 Dec 2009 18:12:46 +0000 (19:12 +0100)]
Fix memory miswrite when passing data arguments to cast()

14 years agoThis is 0.39 v0.39
Vincent Pit [Tue, 1 Dec 2009 00:00:22 +0000 (01:00 +0100)]
This is 0.39

14 years agoDocument passing a string reference as the callback
Vincent Pit [Mon, 30 Nov 2009 23:59:21 +0000 (00:59 +0100)]
Document passing a string reference as the callback

14 years agoFix compiler warnings with the Intel CC
Vincent Pit [Mon, 30 Nov 2009 21:14:16 +0000 (22:14 +0100)]
Fix compiler warnings with the Intel CC

14 years agoTest string callbacks
Vincent Pit [Mon, 30 Nov 2009 20:57:24 +0000 (21:57 +0100)]
Test string callbacks

14 years agoTest destruction of magic callbacks
Vincent Pit [Mon, 30 Nov 2009 20:45:24 +0000 (21:45 +0100)]
Test destruction of magic callbacks

14 years agoAlso test getdata() in t/80-leaks.t
Vincent Pit [Mon, 30 Nov 2009 20:22:10 +0000 (21:22 +0100)]
Also test getdata() in t/80-leaks.t

14 years agoStop leaking objects stored in the data slot
Vincent Pit [Mon, 30 Nov 2009 20:18:23 +0000 (21:18 +0100)]
Stop leaking objects stored in the data slot

14 years agoStop passing arguments to the data callback through an AV
Vincent Pit [Mon, 30 Nov 2009 20:02:04 +0000 (21:02 +0100)]
Stop passing arguments to the data callback through an AV

14 years agoFix t/35-stash.t for 5.11.2
Vincent Pit [Mon, 30 Nov 2009 17:30:56 +0000 (18:30 +0100)]
Fix t/35-stash.t for 5.11.2

And make it more robust for other versions.

14 years agoDirectly store the CVs into the MGWIZ structure
Vincent Pit [Mon, 30 Nov 2009 00:16:18 +0000 (01:16 +0100)]
Directly store the CVs into the MGWIZ structure

Instead of references to CVs.

14 years agoFree the thread local context from an atexit callback
Vincent Pit [Mon, 30 Nov 2009 00:12:05 +0000 (01:12 +0100)]
Free the thread local context from an atexit callback

They happen very late in the destruction process but that's not an issue
there. The MGWIZ structure and the SVs they contain are destroyed and
removed from the global pointer table when the wizard object is destroyed.
At the time the atexit callback fires, the pointer table is then empty and
the only thing left to do is to free its own (shared) memory.

14 years agoStop leaking the SVs that reference the callbacks
Vincent Pit [Sun, 29 Nov 2009 23:14:30 +0000 (00:14 +0100)]
Stop leaking the SVs that reference the callbacks

14 years agoFix a consting error
Vincent Pit [Fri, 27 Nov 2009 11:16:16 +0000 (12:16 +0100)]
Fix a consting error

14 years agoMake the wizard store the MGWIZ address as an IV
Vincent Pit [Fri, 27 Nov 2009 11:13:53 +0000 (12:13 +0100)]
Make the wizard store the MGWIZ address as an IV

Also, since we validated the wizard, use SvIVX to read the address.
That way, we no longer need to pass the interpreter to vmg_find().
This results also in some consting goodness.

15 years agoEmpty the global pointer table at the end of a thread
Vincent Pit [Thu, 26 Nov 2009 21:10:19 +0000 (22:10 +0100)]
Empty the global pointer table at the end of a thread

15 years agoRemove unused variables
Vincent Pit [Thu, 26 Nov 2009 20:53:13 +0000 (21:53 +0100)]
Remove unused variables

15 years agoFactor the V::M magic searching logic into a new vmg_find()
Vincent Pit [Thu, 26 Nov 2009 20:50:50 +0000 (21:50 +0100)]
Factor the V::M magic searching logic into a new vmg_find()

15 years agoRemove all signature-related features
Vincent Pit [Thu, 26 Nov 2009 00:40:07 +0000 (01:40 +0100)]
Remove all signature-related features

From now on, the wizards are only stored in a global pointer table with
threaded perls.

15 years agoCompatibility fix for 5.11.1
Vincent Pit [Thu, 22 Oct 2009 18:54:50 +0000 (20:54 +0200)]
Compatibility fix for 5.11.1

15 years agoThis is 0.38 v0.38
Vincent Pit [Sun, 4 Oct 2009 16:06:33 +0000 (18:06 +0200)]
This is 0.38

15 years agoAdd a cookbook section
Vincent Pit [Sun, 4 Oct 2009 15:54:49 +0000 (17:54 +0200)]
Add a cookbook section