File: stalloc.x

package info (click to toggle)
iraf 2.18.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 86,000 kB
  • sloc: ansic: 115,890; fortran: 74,576; lisp: 18,888; yacc: 5,642; sh: 961; lex: 596; makefile: 509; asm: 159; csh: 54; xml: 33; sed: 4
file content (33 lines) | stat: -rw-r--r-- 971 bytes parent folder | download | duplicates (7)
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
28
29
30
31
32
33
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.

include	"symtab.h"

# STALLOC -- Allocate a block of double aligned storage in the symbol table.
# Increase the size of STAB if overflow occurs.

int procedure stalloc (stp, blklen)

pointer	stp			# symtab descriptor
int	blklen			# number of integer units of storage
int	offset, buflen

begin
	offset = (ST_STABOP(stp) + 1) / 2 * 2
	buflen = ST_STABLEN(stp)

	if (offset + blklen > buflen) {
	    # Overflow has occurred.  Allocate a larger buffer; if overflow
	    # continues to occur the increments grow successively larger to
	    # minimize reallocation.

	    buflen = buflen + max (blklen, ST_STABINC(stp))
	    ST_STABINC(stp) = min (MAX_INCREMENT, ST_STABINC(stp) * INC_GROW)
	    ST_STABLEN(stp) = buflen
	    ST_STABNGROW(stp) = ST_STABNGROW(stp) + 1

	    call realloc (ST_STABP(stp), buflen, TY_STRUCT)
	}

	ST_STABOP(stp) = offset + ((blklen + 1) / 2 * 2)
	return (offset)
end