]> git.vpit.fr Git - perl/modules/Variable-Magic.git/log
perl/modules/Variable-Magic.git
9 years agoSimplify vmg_propagate_errsv_free() so that ERRSV is not used as a lvalue rt101410
Vincent Pit [Tue, 10 Mar 2015 20:02:17 +0000 (17:02 -0300)]
Simplify vmg_propagate_errsv_free() so that ERRSV is not used as a lvalue

9 years agoSimplify vmg_pp_propagate_errsv() so that ERRSV is not used as a lvalue
Vincent Pit [Tue, 10 Mar 2015 20:01:30 +0000 (17:01 -0300)]
Simplify vmg_pp_propagate_errsv() so that ERRSV is not used as a lvalue

9 years agoSimplify vmg_call_sv() so that ERRSV is no longer used as a lvalue
Vincent Pit [Tue, 10 Mar 2015 19:33:52 +0000 (16:33 -0300)]
Simplify vmg_call_sv() so that ERRSV is no longer used as a lvalue

It's less hackish and more resilient to core changes.

9 years agoCode cleanups in Variable::Magic::TestGlobalDestruction::import
Vincent Pit [Tue, 10 Mar 2015 19:10:36 +0000 (16:10 -0300)]
Code cleanups in Variable::Magic::TestGlobalDestruction::import

9 years agoMake Variable::Magic::TestGlobalDestruction::import return its result
Vincent Pit [Tue, 10 Mar 2015 19:08:30 +0000 (16:08 -0300)]
Make Variable::Magic::TestGlobalDestruction::import return its result

9 years agoOutput a diagnostic if global destruction is not tested
Vincent Pit [Tue, 10 Mar 2015 19:07:08 +0000 (16:07 -0300)]
Output a diagnostic if global destruction is not tested

9 years agoOnly test global destruction on perl 5.13.4+
Vincent Pit [Tue, 10 Mar 2015 19:05:26 +0000 (16:05 -0300)]
Only test global destruction on perl 5.13.4+

Or if PERL_VARIABLE_MAGIC_TEST_THREADS is set, for debugging purpose.

9 years agoRemove taint mode from t/15-self.t
Vincent Pit [Tue, 10 Mar 2015 18:55:52 +0000 (15:55 -0300)]
Remove taint mode from t/15-self.t

Or Config::Perl::V will never be used.

9 years agoBetter logic for deciding if this perl has DEBUGGING enabled
Vincent Pit [Tue, 10 Mar 2015 18:55:18 +0000 (15:55 -0300)]
Better logic for deciding if this perl has DEBUGGING enabled

In particular, it uses Config::Perl::V if it is present.

10 years agoThis is 0.55 v0.55
Vincent Pit [Mon, 20 Oct 2014 23:45:33 +0000 (21:45 -0200)]
This is 0.55

10 years agoRemove test dependencies list in POD
Vincent Pit [Mon, 20 Oct 2014 23:33:59 +0000 (21:33 -0200)]
Remove test dependencies list in POD

10 years agoAdd support for METHOP ops rt99319
Vincent Pit [Mon, 20 Oct 2014 21:39:48 +0000 (19:39 -0200)]
Add support for METHOP ops

This new op class has been introduced with perl commit b46e009d9, which was
published with perl 5.21.5.

This fixes RT #99319.

10 years agoDon't hardcode the OPc_* values
Vincent Pit [Mon, 20 Oct 2014 21:31:50 +0000 (19:31 -0200)]
Don't hardcode the OPc_* values

This simplifies the addition of new op classes.

10 years agoThis is 0.54 v0.54
Vincent Pit [Mon, 22 Sep 2014 17:30:47 +0000 (19:30 +0200)]
This is 0.54

10 years agoBump copyright year
Vincent Pit [Mon, 22 Sep 2014 17:09:53 +0000 (19:09 +0200)]
Bump copyright year

10 years agoAdd support for copy magic on code prototype clone rt90205
Vincent Pit [Mon, 22 Sep 2014 17:07:25 +0000 (19:07 +0200)]
Add support for copy magic on code prototype clone

This introduces the constant VMG_COMPAT_CODE_COPY_CLONE.

10 years agoReally make t/35-stash.t pass on 5.21.4 rt98525
Vincent Pit [Mon, 22 Sep 2014 16:20:30 +0000 (18:20 +0200)]
Really make t/35-stash.t pass on 5.21.4

Looks like the core was changed between commit 31d52b17 and the release
of perl 5.21.4.

10 years agoUse run_perl() from VPIT::TestHelpers
Vincent Pit [Mon, 1 Sep 2014 12:57:05 +0000 (14:57 +0200)]
Use run_perl() from VPIT::TestHelpers

This updates VPIT::TestHelpers to 4fb18792.

10 years agoMake t/35-stash.t pass on 5.21.4
Vincent Pit [Mon, 1 Sep 2014 12:09:07 +0000 (14:09 +0200)]
Make t/35-stash.t pass on 5.21.4

11 years agoThis is 0.53 v0.53
Vincent Pit [Sun, 1 Sep 2013 17:50:02 +0000 (19:50 +0200)]
This is 0.53

11 years agoBump copyright year
Vincent Pit [Sun, 1 Sep 2013 17:42:32 +0000 (19:42 +0200)]
Bump copyright year

11 years agoMake Perl version numbers more readable
Vincent Pit [Sat, 24 Aug 2013 18:19:32 +0000 (15:19 -0300)]
Make Perl version numbers more readable

11 years agoRemove obsolete kwalitee workarounds
Vincent Pit [Sat, 24 Aug 2013 16:40:45 +0000 (13:40 -0300)]
Remove obsolete kwalitee workarounds

11 years agoNo tabs please
Vincent Pit [Fri, 23 Aug 2013 19:37:57 +0000 (16:37 -0300)]
No tabs please

11 years agoStop bundling author tests
Vincent Pit [Tue, 20 Aug 2013 21:17:15 +0000 (18:17 -0300)]
Stop bundling author tests

11 years agoGet rid of t/99-kwalitee.t
Vincent Pit [Tue, 6 Aug 2013 03:23:30 +0000 (00:23 -0300)]
Get rid of t/99-kwalitee.t

New versions started to throw warnings if specific environment variables
are not set. This may be appropriate for dist manager users, but not really
for the rest of the world.

Since kwalitee metrics are either obvious or useless, there's no big loss
in removing this test anyway.

11 years agoUpdate the bug tracker URL in META after the rt.perl.org upgrade
Vincent Pit [Sun, 23 Jun 2013 02:24:58 +0000 (23:24 -0300)]
Update the bug tracker URL in META after the rt.perl.org upgrade

11 years agoTypo in POD rt86338
Vincent Pit [Sun, 23 Jun 2013 02:23:02 +0000 (23:23 -0300)]
Typo in POD

Reported by dsteinbrunner@pobox.com.

This fixes RT #86338.

11 years agoUpdate VPIT::TestHelpers to e8344578
Vincent Pit [Wed, 30 Jan 2013 17:10:51 +0000 (15:10 -0200)]
Update VPIT::TestHelpers to e8344578

12 years agoThis is 0.52 v0.52
Vincent Pit [Mon, 5 Nov 2012 02:30:14 +0000 (00:30 -0200)]
This is 0.52

12 years agoAdd VMG_COMPAT_SCALAR_NOLEN rt80388
Vincent Pit [Mon, 5 Nov 2012 02:11:20 +0000 (00:11 -0200)]
Add VMG_COMPAT_SCALAR_NOLEN

Starting from perl 5.17.4, perl no longer calls 'len' magic on scalars.
This new compatibility macro reflects this change.

This fixes RT #80388.

12 years agoMake t/35-stash.t pass with perl 5.17.4 and above
Vincent Pit [Mon, 5 Nov 2012 01:36:33 +0000 (23:36 -0200)]
Make t/35-stash.t pass with perl 5.17.4 and above

Since this version, delete on a stash does no longer calls 'store' uvar
magic twice.

12 years agoSimplify Config loading in Makefile.PL
Vincent Pit [Fri, 2 Nov 2012 01:08:09 +0000 (23:08 -0200)]
Simplify Config loading in Makefile.PL

12 years agoDon't run the POD spelling test in taint mode
Vincent Pit [Fri, 2 Nov 2012 00:27:25 +0000 (22:27 -0200)]
Don't run the POD spelling test in taint mode

This causes the test to crash on perl 5.12 and below with sensitive
architectures like FreeBSD. Ultimately the root of the issue seems to have
been https://rt.perl.org/rt3/Public/Bug/Display.html?id=60378.

Thanks Slaven Rezic for debugging this.

12 years agoUpdate author tests requirements
Vincent Pit [Wed, 22 Aug 2012 10:14:10 +0000 (12:14 +0200)]
Update author tests requirements

12 years agoAdd BUILD_REQUIRES to WriteMakefile()
Vincent Pit [Wed, 22 Aug 2012 10:12:49 +0000 (12:12 +0200)]
Add BUILD_REQUIRES to WriteMakefile()

12 years agoCheck destruction order for exceptions thrown in free callbacks
Vincent Pit [Mon, 20 Aug 2012 17:39:21 +0000 (19:39 +0200)]
Check destruction order for exceptions thrown in free callbacks

12 years agoUpdate how author tests load their dependencies
Vincent Pit [Mon, 20 Aug 2012 17:03:06 +0000 (19:03 +0200)]
Update how author tests load their dependencies

Also make sure that the kwalitee test unlinks its byproducts.

12 years agoThis is 0.51 v0.51
Vincent Pit [Sat, 18 Aug 2012 15:00:32 +0000 (17:00 +0200)]
This is 0.51

12 years agoDocumentation tweaks
Vincent Pit [Sat, 18 Aug 2012 14:33:43 +0000 (16:33 +0200)]
Documentation tweaks

In particular, document how 'free' callbacks propagate exceptions.

12 years agoProperly propagate exceptions when a free callback dies at the end of eval
Vincent Pit [Sat, 18 Aug 2012 13:48:41 +0000 (15:48 +0200)]
Properly propagate exceptions when a free callback dies at the end of eval

12 years agoKill Debian_CPANTS.txt suffixes as well
Vincent Pit [Sat, 18 Aug 2012 13:46:50 +0000 (15:46 +0200)]
Kill Debian_CPANTS.txt suffixes as well

12 years agoMake the 'reset RMG flag' workaround thread-safe
Vincent Pit [Sun, 12 Aug 2012 17:14:00 +0000 (19:14 +0200)]
Make the 'reset RMG flag' workaround thread-safe

This uses trampoline ops for threaded perls, where it is not allowed to
modify the contents PL_op points to, but just what PL_op points at.

12 years agoReset the SV each time for the 'reset RMG flag' workaround
Vincent Pit [Sun, 12 Aug 2012 17:11:01 +0000 (19:11 +0200)]
Reset the SV each time for the 'reset RMG flag' workaround

This bug caused the workaround to only update the flag of the first hash
that it was called for, regardless of subsequent calls with different
hashes.

12 years agoRemove an unused variable
Vincent Pit [Sat, 11 Aug 2012 10:28:29 +0000 (12:28 +0200)]
Remove an unused variable

12 years agoPrettify the default no-op callback
Vincent Pit [Sat, 11 Aug 2012 10:27:57 +0000 (12:27 +0200)]
Prettify the default no-op callback

12 years agoDon't crash if dispell is called in a clear, free or uvar callback
Vincent Pit [Sun, 5 Aug 2012 20:39:43 +0000 (22:39 +0200)]
Don't crash if dispell is called in a clear, free or uvar callback

12 years agoRename vmg_uvar_del() to vmg_mg_del() to reuse its logic
Vincent Pit [Fri, 10 Aug 2012 16:47:59 +0000 (18:47 +0200)]
Rename vmg_uvar_del() to vmg_mg_del() to reuse its logic

The new vmg_mg_del() is now also used to remove our PERL_MAGIC_ext tokens.

12 years agoMake sure all entries of MY_CXT.b__op_stashes are initialized
Vincent Pit [Sat, 4 Aug 2012 23:18:02 +0000 (01:18 +0200)]
Make sure all entries of MY_CXT.b__op_stashes are initialized

Otherwise CLONE may be testing uninitialized memory areas.

12 years agoFix indentation in vmg_call_sv()
Vincent Pit [Sat, 4 Aug 2012 21:50:23 +0000 (23:50 +0200)]
Fix indentation in vmg_call_sv()

The previous commit just made it obvious that it was misindented.

12 years agoPort the svt_free-specific part of vmg_call_sv() to a customizable hook
Vincent Pit [Sat, 4 Aug 2012 21:47:31 +0000 (23:47 +0200)]
Port the svt_free-specific part of vmg_call_sv() to a customizable hook

12 years agoAlways enable VMG_SAVE_LAST_CX
Vincent Pit [Sun, 5 Aug 2012 10:39:26 +0000 (12:39 +0200)]
Always enable VMG_SAVE_LAST_CX

This allows to remove the special case of only setting in_eval when we are
in a destructor.

12 years agoMake the uvar user data into a proper struct
Vincent Pit [Thu, 2 Aug 2012 21:52:18 +0000 (23:52 +0200)]
Make the uvar user data into a proper struct

12 years agoThis is 0.50 v0.50
Vincent Pit [Sun, 24 Jun 2012 23:00:56 +0000 (01:00 +0200)]
This is 0.50

12 years agoImprove Capture::Tiny discovery in t/17-ctl.t
Vincent Pit [Sun, 24 Jun 2012 22:51:11 +0000 (00:51 +0200)]
Improve Capture::Tiny discovery in t/17-ctl.t

12 years agoDon't use the main:: stash in the last test of t/17-ctl.t rt77991
Vincent Pit [Sun, 24 Jun 2012 22:50:26 +0000 (00:50 +0200)]
Don't use the main:: stash in the last test of t/17-ctl.t

As it is less subject to extra lookups.

This fixes RT #77991 in a better way.

12 years agoConsistently format magic types with I<>
Vincent Pit [Sun, 24 Jun 2012 22:30:12 +0000 (00:30 +0200)]
Consistently format magic types with I<>

12 years agoRemove a couple of commented asserts
Vincent Pit [Sun, 24 Jun 2012 22:08:08 +0000 (00:08 +0200)]
Remove a couple of commented asserts

12 years agoLeak less memory when an exception is thrown from a free callback
Vincent Pit [Sun, 24 Jun 2012 22:07:45 +0000 (00:07 +0200)]
Leak less memory when an exception is thrown from a free callback

12 years agoMove the global destruction logic of t/15-self.t out in an helper module
Vincent Pit [Sun, 24 Jun 2012 21:45:52 +0000 (23:45 +0200)]
Move the global destruction logic of t/15-self.t out in an helper module

12 years agoLower t/17-ctl.t's last test expectations
Vincent Pit [Sun, 24 Jun 2012 19:19:50 +0000 (21:19 +0200)]
Lower t/17-ctl.t's last test expectations

With ActivePerl, there's only one line produced by this test because of
some strange interference between local *_, loading Exporter.pm and
compiling '-d _'. Since this test has also been broken recently by a
change in the core, it is more reliable to stop asking for the exact
count of matches.

This fixes RT #77991.

12 years agoDon't leak vtables and wizards freed during global destruction
Vincent Pit [Sat, 23 Jun 2012 21:39:11 +0000 (23:39 +0200)]
Don't leak vtables and wizards freed during global destruction

At this time, we cannot access the callbacks, but we are still allowed
to call Safefree() and PerlMemShared_free().

12 years agoCleaner version numbers
Vincent Pit [Sat, 23 Jun 2012 21:20:48 +0000 (23:20 +0200)]
Cleaner version numbers

12 years agoRemove one extra mention to MGf_COPY
Vincent Pit [Sat, 23 Jun 2012 21:16:51 +0000 (23:16 +0200)]
Remove one extra mention to MGf_COPY

Also explicitely state from which perl versions the MGf_* constants are
available.

12 years agoJumbo POD overhaul
Vincent Pit [Sat, 23 Jun 2012 20:02:16 +0000 (22:02 +0200)]
Jumbo POD overhaul

Lots of rewordings and clarifications.

12 years agoTeach t/35-stash.t about perl 5.17.1
Vincent Pit [Thu, 21 Jun 2012 16:50:19 +0000 (18:50 +0200)]
Teach t/35-stash.t about perl 5.17.1

12 years agoThis is 0.49 v0.49
Vincent Pit [Tue, 5 Jun 2012 21:39:00 +0000 (23:39 +0200)]
This is 0.49

12 years agoTeach t/17-ctl.t about perl 5.17.0
Vincent Pit [Tue, 5 Jun 2012 21:06:47 +0000 (23:06 +0200)]
Teach t/17-ctl.t about perl 5.17.0

12 years agoReuse the diag() helper in the TestThreads module
Vincent Pit [Sun, 6 May 2012 13:16:42 +0000 (15:16 +0200)]
Reuse the diag() helper in the TestThreads module

12 years agoRequire Module::ExtractUse 0.24 for the Kwalitee test
Vincent Pit [Sun, 19 Feb 2012 13:09:03 +0000 (14:09 +0100)]
Require Module::ExtractUse 0.24 for the Kwalitee test

12 years agoThis is 0.48 v0.48
Vincent Pit [Fri, 17 Feb 2012 23:38:07 +0000 (00:38 +0100)]
This is 0.48

12 years agoDecorate the magic callbacks section
Vincent Pit [Fri, 17 Feb 2012 18:46:50 +0000 (19:46 +0100)]
Decorate the magic callbacks section

12 years agoRemove an useless #define wrap
Vincent Pit [Fri, 17 Feb 2012 18:41:00 +0000 (19:41 +0100)]
Remove an useless #define wrap

12 years agoBump copyright year
Vincent Pit [Fri, 17 Feb 2012 18:16:42 +0000 (19:16 +0100)]
Bump copyright year

12 years agoAllow passing ref-to-undef as callbacks to install a noop callback
Vincent Pit [Fri, 17 Feb 2012 18:16:16 +0000 (19:16 +0100)]
Allow passing ref-to-undef as callbacks to install a noop callback

12 years agoIn t/22-len.t, localize the wizard for strings to the SKIP block
Vincent Pit [Fri, 17 Feb 2012 18:15:35 +0000 (19:15 +0100)]
In t/22-len.t, localize the wizard for strings to the SKIP block

12 years agoMove the sv length logic into a new vmg_sv_len() function
Vincent Pit [Thu, 16 Feb 2012 22:51:02 +0000 (23:51 +0100)]
Move the sv length logic into a new vmg_sv_len() function

12 years agoProtect $@ inside Variable::Magic::TestWatcher::init_watcher
Vincent Pit [Thu, 16 Feb 2012 22:11:20 +0000 (23:11 +0100)]
Protect $@ inside Variable::Magic::TestWatcher::init_watcher

12 years agoTest that unqualified sub names as callbacks default to the current package
Vincent Pit [Thu, 16 Feb 2012 21:58:25 +0000 (22:58 +0100)]
Test that unqualified sub names as callbacks default to the current package

13 years agoThis is 0.47 v0.47
Vincent Pit [Thu, 27 Oct 2011 16:52:15 +0000 (18:52 +0200)]
This is 0.47

13 years agoTest 'delete' uvar magic and introduce VMG_COMPAT_HASH_DELETE_NOUVAR_VOID
Vincent Pit [Wed, 26 Oct 2011 22:10:15 +0000 (00:10 +0200)]
Test 'delete' uvar magic and introduce VMG_COMPAT_HASH_DELETE_NOUVAR_VOID

13 years ago'store' and 'delete' uvar magics don't need the uvar/clear hack
Vincent Pit [Wed, 26 Oct 2011 21:33:18 +0000 (23:33 +0200)]
'store' and 'delete' uvar magics don't need the uvar/clear hack

13 years agoClean up vmg_uvar_val() a bit
Vincent Pit [Wed, 26 Oct 2011 20:57:54 +0000 (22:57 +0200)]
Clean up vmg_uvar_val() a bit

13 years agoMinimize the accesses to the optree during the uvar/clear hack
Vincent Pit [Wed, 26 Oct 2011 20:43:38 +0000 (22:43 +0200)]
Minimize the accesses to the optree during the uvar/clear hack

13 years agoPrettify the declaration of vmg_svt_copy()
Vincent Pit [Wed, 26 Oct 2011 19:56:42 +0000 (21:56 +0200)]
Prettify the declaration of vmg_svt_copy()

13 years agovmg_cast() should set mg_flags according to the vtable
Vincent Pit [Wed, 26 Oct 2011 19:56:15 +0000 (21:56 +0200)]
vmg_cast() should set mg_flags according to the vtable

And not according to the Perl callbacks.

13 years agoMake the watch { } wrapper properly apply context
Vincent Pit [Wed, 26 Oct 2011 18:45:00 +0000 (20:45 +0200)]
Make the watch { } wrapper properly apply context

13 years agoThe magic signatures are no longer needed
Vincent Pit [Wed, 26 Oct 2011 17:26:26 +0000 (19:26 +0200)]
The magic signatures are no longer needed

13 years agoEnforce saner checks on wizard SVs and MAGIC tokens
Vincent Pit [Wed, 26 Oct 2011 17:22:13 +0000 (19:22 +0200)]
Enforce saner checks on wizard SVs and MAGIC tokens

This commit adds a variety of helper functions that extract the vmg_wizard
object from a SV or a MAGIC token. Version with (for direct interaction
with the user) and without checks (for magic callbacks, where we know the
MAGIC token is already valid) are provided.

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