]> git.vpit.fr Git - perl/modules/Variable-Magic.git/commitdiff
Explicitely cap the op_info parameter to 255
authorVincent Pit <vince@profvince.com>
Mon, 28 Dec 2009 18:25:11 +0000 (19:25 +0100)
committerVincent Pit <vince@profvince.com>
Mon, 28 Dec 2009 18:25:11 +0000 (19:25 +0100)
Magic.xs

index f26774dddf4a830ecddf812e3b295693e7546e4d..edddac8a3574a85a7a7791d54eef1e3fbcf8a9fc 100644 (file)
--- a/Magic.xs
+++ b/Magic.xs
@@ -1340,6 +1340,7 @@ SV *_wizard(...)
 PROTOTYPE: DISABLE
 PREINIT:
  I32 i = 0;
 PROTOTYPE: DISABLE
 PREINIT:
  I32 i = 0;
+ UV opinfo;
  MGWIZ *w;
  MGVTBL *t;
  SV *cb;
  MGWIZ *w;
  MGVTBL *t;
  SV *cb;
@@ -1365,10 +1366,13 @@ CODE:
  Newx(w, 1, MGWIZ);
 
  VMG_SET_CB(ST(i++), data);
  Newx(w, 1, MGWIZ);
 
  VMG_SET_CB(ST(i++), data);
+
  cb = ST(i++);
  cb = ST(i++);
- w->opinfo = SvOK(cb) ? SvUV(cb) : 0;
+ opinfo = SvOK(cb) ? SvUV(cb) : 0;
+ w->opinfo = (U8) ((opinfo < 255) ? opinfo : 255);
  if (w->opinfo)
   vmg_op_info_init(w->opinfo);
  if (w->opinfo)
   vmg_op_info_init(w->opinfo);
+
  VMG_SET_SVT_CB(ST(i++), get);
  VMG_SET_SVT_CB(ST(i++), set);
  VMG_SET_SVT_CB(ST(i++), len);
  VMG_SET_SVT_CB(ST(i++), get);
  VMG_SET_SVT_CB(ST(i++), set);
  VMG_SET_SVT_CB(ST(i++), len);