summaryrefslogtreecommitdiff
path: root/save_ary.bad
diff options
context:
space:
mode:
Diffstat (limited to 'save_ary.bad')
-rw-r--r--save_ary.bad44
1 files changed, 44 insertions, 0 deletions
diff --git a/save_ary.bad b/save_ary.bad
new file mode 100644
index 0000000000..807e33978d
--- /dev/null
+++ b/save_ary.bad
@@ -0,0 +1,44 @@
+AV *
+save_ary(av)
+AV *av;
+{
+ register SV *sv;
+
+ sv = NEWSV(10,0);
+ sv->sv_state = SVs_SARY;
+ sv_setpv(sv, (char*)av, sizeof(AV));
+
+ av->av_sv.sv_rare = AVf_REAL;
+ av->av_magic = NEWSV(7,0);
+ av->av_alloc = av->av_array = 0;
+ /* sv_magic(av->av_magic, gv, '#', Nullch, 0); */
+ av->av_max = av->av_fill = -1;
+
+ sv->sv_u.sv_av = av;
+ (void)av_push(savestack,sv); /* save array ptr */
+ return av;
+}
+
+HV *
+save_hash(hv)
+HV *hv;
+{
+ register SV *sv;
+
+ sv = NEWSV(11,0);
+ sv->sv_state = SVs_SHASH;
+ sv_setpv(sv, (char*)hv, sizeof(HV));
+
+ hv->hv_array = 0;
+ hv->hv_max = 7;
+ hv->hv_dosplit = hv->hv_max * FILLPCT / 100;
+ hv->hv_fill = 0;
+#ifdef SOME_DBM
+ hv->hv_dbm = 0;
+#endif
+ (void)hv_iterinit(hv); /* so each() will start off right */
+
+ sv->sv_u.sv_hv = hv;
+ (void)av_push(savestack,sv); /* save hash ptr */
+ return hv;
+}