aboutsummaryrefslogtreecommitdiff
path: root/unix/boot/spp/rpp/ratlibr/rmtabl.r
blob: 16a5d3d5d702d0b12c10a3272d6c3a64aeaca68c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
include	defs

# rmtabl --- remove a symbol table, deleting all entries

   subroutine rmtabl (st)
   pointer st

   DS_DECL(Mem, 1)

   integer i

   pointer walker, bucket, node

   bucket = st
   do i = 1, ST_HTABSIZE; {
      bucket = bucket + 1
      walker = Mem (bucket)
      while (walker != LAMBDA) {
	 node = walker
	 walker = Mem (node + ST_LINK)
	 call dsfree (node)
	 }
      }

   call dsfree (st)
   return
   end