summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pod/perlguts.pod3
-rw-r--r--pp.c2
-rwxr-xr-xt/op/vec.t5
3 files changed, 7 insertions, 3 deletions
diff --git a/pod/perlguts.pod b/pod/perlguts.pod
index 4806815de4..1aea1d8098 100644
--- a/pod/perlguts.pod
+++ b/pod/perlguts.pod
@@ -42,9 +42,10 @@ The five routines are:
SV* newSVpvf(const char*, ...);
SV* newSVsv(SV*);
-To change the value of an *already-existing* SV, there are six routines:
+To change the value of an *already-existing* SV, there are seven routines:
void sv_setiv(SV*, IV);
+ void sv_setuv(SV*, UV);
void sv_setnv(SV*, double);
void sv_setpv(SV*, char*);
void sv_setpvn(SV*, char*, int)
diff --git a/pp.c b/pp.c
index 64411df5c2..34e340d667 100644
--- a/pp.c
+++ b/pp.c
@@ -1911,7 +1911,7 @@ PP(pp_vec)
}
}
- sv_setiv(TARG, (IV)retnum);
+ sv_setuv(TARG, (UV)retnum);
PUSHs(TARG);
RETURN;
}
diff --git a/t/op/vec.t b/t/op/vec.t
index 97b6d60989..71171447d6 100755
--- a/t/op/vec.t
+++ b/t/op/vec.t
@@ -2,7 +2,7 @@
# $RCSfile: vec.t,v $$Revision: 4.1 $$Date: 92/08/07 18:28:36 $
-print "1..13\n";
+print "1..15\n";
print vec($foo,0,1) == 0 ? "ok 1\n" : "not ok 1\n";
print length($foo) == 0 ? "ok 2\n" : "not ok 2\n";
@@ -21,4 +21,7 @@ print vec($foo,1,8) == 0xf1 ? "ok 10\n" : "not ok 10\n";
print ((ord(substr($foo,1,1)) & 255) == 0xf1 ? "ok 11\n" : "not ok 11\n");
print vec($foo,2,4) == 1 ? "ok 12\n" : "not ok 12\n";
print vec($foo,3,4) == 15 ? "ok 13\n" : "not ok 13\n";
+vec($Vec, 0, 32) = 0xbaddacab;
+print $Vec eq "\xba\xdd\xac\xab" ? "ok 14\n" : "not ok 14\n";
+print vec($Vec, 0, 32) == 3135089835 ? "ok 15\n" : "not ok 15\n";