﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
414	Bugs identified in archive_.pl1 subroutine	Jim Lippard	Eric Swenson	"Numbers 28–32 are part of a single numbering across the archive programs; line numbers are those of the MR12.8 source. The test kit (tests.archive) contains an exec_com for the item marked ""Test"", and archive_test.pl1, a program that calls the archive_ entries directly.

Bug 28: a component name longer than 32 characters is truncated, line 110

archive_$get_component and archive_$get_component_info truncate the component name argument to 32 characters, so a longer name finds the component named with its first 32 characters. With an archive holding abcdefghijklmnopqrstuvwxyz012345:

archive_test t_longname abcdefghijklmnopqrstuvwxyz0123456789
get_component abcdefghijklmnopqrstuvwxyz0123456789:
  found, bc 324
get_component_info abcdefghijklmnopqrstuvwxyz0123456789:
  abcdefghijklmnopqrstuvwxyz012345  bc 324 ...

Expected: error_table_$no_component from both, since no component can have a name longer than 32 characters. Test: bug28.ec.

Bug 29: on a format error in list_components, the component list is freed without naming the caller's area, line 266

The list is allocated in the caller's area (output_area) but freed with a plain free. (The cleanup handler frees it in (output_area).) No symptom was observed, probably because a Multics allocation block identifies its own area. Found by inspection.

Bug 30: a header that extends past the end of the archive is read, line 336

When fewer words remain after a component than a header needs, the next header is read partly beyond the archive's bit count. Normally this produces a format error anyway. Found by inspection.

Bug 31: next_component with a pointer that does not follow a header reports a format error in the archive, line 176

A component_ptr that points into the middle of a component is backed up by a header length and rejected as error_table_$archive_fmt_err, blaming the archive for the caller's bad argument. Expected: error_table_$bad_arg. Found by inspection.

Bug 32: missing parameter attribute, line 50

The declaration of P_n_components lacks the parameter attribute. Found by inspection."	defect	new	minor	MR12.9	Standard Library	MR12.9		archive, archive_.pl1	
