]> git.vpit.fr Git - perl/modules/Variable-Magic.git/commitdiff
Only enable turn the MGf_* flags on when the corresponding callback has been specified
authorVincent Pit <vince@profvince.com>
Fri, 5 Sep 2008 16:39:50 +0000 (18:39 +0200)
committerVincent Pit <vince@profvince.com>
Fri, 5 Sep 2008 16:39:50 +0000 (18:39 +0200)
Magic.xs

index bfc75c9400048207f4e9ff5b59c980a14cc91b00..82bf5dd022c5a614e9f15095f7f72a1c7cdd0453 100644 (file)
--- a/Magic.xs
+++ b/Magic.xs
@@ -266,17 +266,18 @@ STATIC UV vmg_cast(pTHX_ SV *sv, SV *wiz, AV *args) {
  data = (w->cb_data) ? vmg_data_new(w->cb_data, sv, args) : NULL;
  mg = sv_magicext(sv, data, PERL_MAGIC_ext, w->vtbl, (const char *) wiz, HEf_SVKEY);
  mg->mg_private = w->sig;
- mg->mg_flags   = mg->mg_flags
 #if MGf_COPY
-                | MGf_COPY
+ if (w->cb_copy)
+  mg->mg_flags |= MGf_COPY;
 #endif /* MGf_COPY */
 #if MGf_DUP
-                | MGf_DUP
+ if (w->cb_dup)
+  mg->mg_flags |= MGf_DUP;
 #endif /* MGf_DUP */
 #if MGf_LOCAL
-                | MGf_LOCAL
+ if (w->cb_local)
+  mg->mg_flags |= MGf_LOCAL;
 #endif /* MGf_LOCAL */
-                ;
 
 #if VMG_UVAR
  if (w->uvar && SvTYPE(sv) >= SVt_PVHV) {