From 40e5a5811c6ffce9b0974e93cdd927cbcf60c157 Mon Sep 17 00:00:00 2001 From: Joe Hunkeler Date: Tue, 11 Aug 2015 16:51:37 -0400 Subject: Repatch (from linux) of OSX IRAF --- sys/symtab/stalloc.x | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 sys/symtab/stalloc.x (limited to 'sys/symtab/stalloc.x') diff --git a/sys/symtab/stalloc.x b/sys/symtab/stalloc.x new file mode 100644 index 00000000..1300953b --- /dev/null +++ b/sys/symtab/stalloc.x @@ -0,0 +1,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 -- cgit