Commit Graph

13154 Commits

Author SHA1 Message Date
Ulrich Drepper
ef2bb4137e Update.
* signal/signal.h: Add nonnull attributes.
2004-11-20 09:55:44 +00:00
Ulrich Drepper
3a7fd2f921 Update.
2004-11-20  Ulrich Drepper  <drepper@redhat.com>

	* signal/signal.h: Add deprecated attributes to sigstack,
	sigpause, sigblock, sigsetmask, siggetmask.
2004-11-20 09:01:22 +00:00
Ulrich Drepper
b639d0c939 Update.
2004-11-20  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/unix/sysv/linux/bits/socket.h (SCM_RIGHTS): Avoid
	comma at the end of enum if __USE_BSD is not defined.

	(calc_inveclosure, calc_eclosure): Skip OP_DELETED_SUBEXP nodes.
2004-11-20 07:16:31 +00:00
Ulrich Drepper
6cce65407e Update.
* malloc/malloc.c (_int_malloc): Check for corruption of chunk
	which is about to be returned.
2004-11-20 04:45:06 +00:00
Ulrich Drepper
893e609847 Update.
2004-11-19  Ulrich Drepper  <drepper@redhat.com>

	* malloc/malloc.c (_int_free): Add a few more cheap tests for
	corruption.

	* debug/fprintf_chk.c: Adjust all users.
2004-11-19 21:35:00 +00:00
Ulrich Drepper
3defcff399 Update.
2004-11-17  Randolph Chung  <tausq@debian.org>

	* sysdeps/hppa/dl-machine.h (TRAMPOLINE_TEMPLATE): Add unwind
	annotations.
2004-11-19 00:01:34 +00:00
Ulrich Drepper
c06a6956a4 [BZ #544]
Update.
2004-11-18  Jakub Jelinek  <jakub@redhat.com>

	[BZ #544]
	* posix/regex.h (RE_NO_SUB): New define.
	* posix/regex_internal.h (OP_DELETED_SUBEXP): New.
	(re_dfa_t): Add subexp_map.
	* posix/regcomp.c (struct subexp_optimize): New type.
	(optimize_subexps): New routine.
	(re_compile_internal): Call it.
	(re_compile_pattern): Set preg->no_sub to 1 if RE_NO_SUB.
	(free_dfa_content): Free subexp_map.
	(calc_inveclosure, calc_eclosure): Skip OP_DELETED_SUBEXP
	nodes.
	* posix/regexec.c (re_search_internal): If subexp_map
	is not NULL, duplicate registers as needed.
	* posix/Makefile: Add rules to build and run tst-regex2.
	* posix/tst-regex2.c: New test.
	* posix/rxspencer/tests: Fix last two tests (\0 -> \1).
	Add some new tests for nested subexpressions.
2004-11-18 23:57:34 +00:00
Ulrich Drepper
1b1d36792e Update.
2004-11-18  Ulrich Drepper  <drepper@redhat.com>
	* libio/libio.h (_IO_FLAGS2_FORTIFY): Renamed from
	_IO_FLAGS2_CHECK_PERCENT_N.
	* debug/fprintff_chk.c: Adjust all users.
	* debug/printf_chk.c: Likewise.
	* debug/vfprintf_chk.c: Likewise.
	* debug/vprintf_chk.c: Likewise.
	* debug/vsnprintf_chk.c: Likewise.
	* debug/vsprintf_chk.c: Likewise.
	* stdio-common/vfprintf.c: Likewise.  Detect missing %N$ formats.
	* debug/tst-chk1.c: Test detection of missing %N$ formats.
2004-11-18 23:25:46 +00:00
Ulrich Drepper
fb67e07dfb (_IO_FLAGS2_FORTIFY): Renamed from _IO_FLAGS2_CHECK_PERCENT_N. 2004-11-18 23:18:45 +00:00
Roland McGrath
ec188f92d9 * sysdeps/unix/sysv/linux/timer_routines.c (__start_helper_thread):
Make sure SIGCANCEL is blocked as well.
2004-11-17 21:27:16 +00:00
Roland McGrath
0086214c64 2004-11-17 Roland McGrath <roland@redhat.com>
* sysdeps/unix/sysv/linux/timer_routines.c (__start_helper_thread):
	Make sure SIGCANCEL is blocked as well.
2004-11-17 21:26:59 +00:00
Ulrich Drepper
579e2d6ef1 Update.
2004-11-17  Alfred M. Szmidt  <ams@gnu.org>

	* sysdeps/posix/libc_fatal.c: Include <sys/uio.h>.
2004-11-17 09:10:08 +00:00
Ulrich Drepper
f895670da2 Update.
2004-11-15  Jakub Jelinek  <jakub@redhat.com>

	* posix/bug-regex24.c: Include string.h.

	* nis/nis_clone_obj.c (nis_clone_object): Rename out3 label to out2
	and out2 to out.  Remove out label.  Formatting.

2004-11-15  Ulrich Drepper  <drepper@redhat.com>

	* include/stdio.h: Do not mark __libc_message as noreturn.
	* sysdeps/unix/sysv/linux/libc_fatal.c (__libc_fatal): Add loop to
	fool gcc.  Include <stdbool.h>.
	* sysdeps/posix/libc_fatal.c (__libc_fatal): Add loop to fool gcc.
	(__libc_message): Fix typo.
2004-11-15 22:00:25 +00:00
Ulrich Drepper
4f27c49622 Update.
2004-11-13  Ulrich Drepper  <drepper@redhat.com>

	* malloc/malloc.c (malloc_state): stat_lock_* elements need only
	be defined if THREAD_STATS is defined.  Remove pad0_ since it does
	not align with cache line sizes in general anyway.
2004-11-13 19:50:50 +00:00
Ulrich Drepper
c120d94d58 Update.
2004-11-13  Jakub Jelinek  <jakub@redhat.com>

	* elf/rtld.c (print_statistics): Avoid segfaults if not all namespaces
	are used.  Fix computation of num_relative_relocations on RELA
	architectures other than IA-64 and Alpha.

2004-11-13  Ulrich Drepper  <drepper@redhat.com>

	* malloc/malloc.c (_int_free): Use munmap_chunk for handling
	mmaped memory.
2004-11-13 18:58:01 +00:00
Ulrich Drepper
37fa1953d5 Update.
* malloc/malloc.c (_int_free): Remove test for NULL parameter.
	(_int_realloc): Call _int_free only if memory parameter is not NULL.
2004-11-13 05:43:36 +00:00
Ulrich Drepper
a9055cab7a Update.
2004-11-12  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/unix/sysv/linux/libc_fatal.c: Add new function __libc_message
	which performs the printing and simple format string handling.  The
	string is written to tty, stderr, syslog in this order, stopping after
	the first successful output.
	(__libc_fatal): Call __libc_message.
	* include/stdio.h: Declare __libc_message.
	* malloc/malloc.c (malloc_printerr): Use __libc_message.
	* debug/chk_fail.c: Also print message with __libc_message.
	* debug/test-strcpy_chk.c: Ensure that debug messages are not printed
	to the terminal or stderr.
	* debug/tst-chk1.c: Likewise.

	* posix/Makefile: Remove gpl2lgpl variable.
2004-11-13 03:13:00 +00:00
Ulrich Drepper
1327439fc6 Add new function __libc_message which performs the printing and simple format string handling. The string is written to tty, stderr, syslog in this order, stopping after the first successful output. 2004-11-13 03:09:30 +00:00
Roland McGrath
bfd259e0f6 * elf/elf.h: Add 20 bit relocations R_390_*20. 2004-11-12 21:51:46 +00:00
Roland McGrath
b105fb4b6f 2004-11-12 Martin Schwidefsky <schwidefsky@de.ibm.com>
* elf/elf.h: Add 20 bit relocations R_390_*20.
2004-11-12 21:51:33 +00:00
Ulrich Drepper
c31e430a8c Remove gpl2lgpl variable. 2004-11-12 19:46:34 +00:00
Ulrich Drepper
d5ef95c858 Update.
2004-11-12  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/unix/sysv/linux/i386/setuid.c: Include linux/posix_types.h.
	* sysdeps/unix/sysv/linux/i386/setgid.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/setreuid.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/setregid.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/setresuid.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/setresgid.c: Likewise.
2004-11-12 19:22:26 +00:00
Ulrich Drepper
a45e13bd3e Update.
2004-11-12  Andreas Schwab  <schwab@suse.de>

	* nis/ypclnt.c (ypprot_err): Fix "minor optimizations".
2004-11-12 19:06:21 +00:00
Ulrich Drepper
7db612081a Update.
2004-11-12  Ulrich Drepper  <drepper@redhat.com>

	* posix/Makefile (tests): Add bug-regex24.
	* posix/bug-regex24.c: New file.

2004-11-12  Paolo Bonzini  <bonzini@gnu.org>

	* posix/regexec.c (check_dst_limits_calc_pos_1): Use the map to
	cut recursive paths.  Make exit condition more precise.
	(match_ctx_add_entry): Initialize the map.
	* posix/regex_internal.h (struct re_backref_cache_entry): Add a map of
	reachable subexpression nodes from each backreference cache entry.
2004-11-12 09:45:05 +00:00
Ulrich Drepper
ccd8de9aa6 Update.
2004-11-10  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/unix/sysv/linux/setreuid.c: Remove sys/syscall.h,
	sys/types.h, linux/posix_types.h, sysdep.h and pthread-functions.h
	includes.  Include setxid.h.  Use INLINE_SETXID_SYSCALL macro
	instead of INLINE_SYSCALL, kill the HAVE_PTR__NPTL_SETXID guarded
	snippets.
	* sysdeps/unix/sysv/linux/setegid.c: Likewise.
	* sysdeps/unix/sysv/linux/setuid.c: Likewise.
	* sysdeps/unix/sysv/linux/seteuid.c: Likewise.
	* sysdeps/unix/sysv/linux/setgid.c: Likewise.
	* sysdeps/unix/sysv/linux/setresuid.c: Likewise.
	* sysdeps/unix/sysv/linux/setresgid.c: Likewise.
	* sysdeps/unix/sysv/linux/setregid.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/setegid.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/setreuid.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/setuid.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/seteuid.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/setgid.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/setresuid.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/setresgid.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/setregid.c: Likewise.
	* sysdeps/unix/sysv/linux/alpha/setreuid.c: Likewise.
	Formatting.  Change signed int into int.
	* sysdeps/unix/sysv/linux/alpha/setresuid.c: Likewise.
	* sysdeps/unix/sysv/linux/alpha/setresgid.c: Likewise.
	* sysdeps/unix/sysv/linux/alpha/setregid.c: Likewise.
	* sysdeps/unix/sysv/linux/syscalls.list (setresuid, setresgid):
	Remove.
	* sysdeps/unix/setxid.h: New file.

	* Rules (binaries-static): Add xtests-static.
	* Makeconfig (run-program-prefix): Filter also xtests-static.
2004-11-12 01:27:04 +00:00
Ulrich Drepper
85bd633137 Remove sys/syscall.h, sys/types.h, linux/posix_types.h, sysdep.h and pthread-functions.h includes. Include setxid.h. Use INLINE_SETXID_SYSCALL macro instead of INLINE_SYSCALL, kill the HAVE_PTR__NPTL_SETXID guarded snippets. 2004-11-12 01:15:06 +00:00
Roland McGrath
29311370cd [BZ #535]
2004-11-09  Paul Eggert  <eggert@cs.ucla.edu.
	[BZ #535]
	* time/difftime.c: Fix a double-rounding bug on hosts with
	64-bit time_t and long double being IEEE double.  Also, port
	to more valid C99 hosts, even those that have padding bits.
	Don't include <values.h> since it is marked as an obsolescent
	interface.  Include <limits.h>, <float.h>, and <stdint.h> instead.
	(TYPE_BITS, TYPE_FLOATING, TYPE_SIGNED): New macros.
	(subtract): New static function, that works correctly without
	double-rounding, even on hosts with 64-bit time_t.  Also cater
	to hosts with padding bits.
	(__difftime): Use it.  Use DBL_MANT_DIG and LDBL_MANT_DIG to
	determine whether floating types are wide enough: the old
	test (which used sizeof) could in theory report the wrong results
	on hosts with padding bits in floating-point values.
2004-11-11 22:31:17 +00:00
Roland McGrath
37b1a15401 [BZ #542]
2004-11-11  Simon Josefsson  <jas@extundo.com>
	[BZ #542]
	* sysdeps/generic/strtok_r.c [HAVE_CONFIG_H]: Include config.h.
	[!_LIBC]: Include strtok_r.h (in gnulib), map __strtok_r to
	strtok_r and __rawmemchr to strch.
	(__strtok_r): Use C89 prototype.
	[weak_alias]: Move calls to libc_hidden_def and weak_alias into
	this #ifdef.
2004-11-11 22:15:51 +00:00
Roland McGrath
a579c7f543 [BZ #541]
2004-11-10  Paul Eggert  <eggert@cs.ucla.edu>
	[BZ #541]
	* time/mktime.c (SHR): New macro, which is a portable
	substitute for >> that should work even on Crays.
	(TIME_T_MIDPOINT, ydhms_diff, __mktime_internal): Use it.
	Problem reported by Mark D. Baushke in
	<http://lists.gnu.org/archive/html/bug-gnulib/2004-11/msg00071.html>.
2004-11-11 00:28:28 +00:00
Roland McGrath
1c67fabdb8 [BZ #541]
2004-11-10  Paul Eggert  <eggert@cs.ucla.edu>
	[BZ #541]
	* time/mktime.c (SHR): New macro, which is a portable
	substitute for >> that should work even on Crays.
	(TIME_T_MIDPOINT, ydhms_diff, __mktime_internal): Use it.
	Problem reported by Mark D. Baushke in
	<http://lists.gnu.org/archive/html/bug-gnulib/2004-11/msg00071.html>.
2004-11-11 00:28:17 +00:00
Ulrich Drepper
cb265fec1b Update.
* posix/regexec.c (match_ctx_free_subtops): Remove, merge into...
	(match_ctx_clean): ... this function.
	(match_ctx_free): Call match_ctx_clean.
2004-11-10 18:51:26 +00:00
Ulrich Drepper
bb677c9581 Update.
2004-11-09  Paolo Bonzini  <bonzini@gnu.org>

	* posix/regexec.c (transit_state): Remove the check for
	out-of-bounds buffers.
	(check_matching): Check here for out-of-bounds buffers.
	(re_search_internal): Store into match_kind a set of bits
	indicating which incantation of fastmap scanning must be
	used.  Use a switch statement instead of multiple ifs.
	Exit the final "for (;;)" with goto free_return unless
	the match succeeded, thus simplifying some conditionals.

	* posix/regex_internal.c (re_string_reconstruct,
	re_string_context_at): Add several branch predictions for
	case-sensitive matching and no transition table being used.

2004-11-10  Ulrich Drepper  <drepper@redhat.com>

	* posix/tst-waitid.c: Don't use error to print error message, they
	won't end up in the .out file.

	* nscd/nscd_getgr_r.c: Likewise.  Make map externally visible.
	* nscd/nscd_gethst_r.c: Likewise.
2004-11-10 15:48:06 +00:00
Ulrich Drepper
ed2ced8ae3 Update.
2004-11-10  Jakub Jelinek  <jakub@redhat.com>

	* Makefile (tests): Add tst-exit3.
	* tst-exit3.c: New test.
2004-11-10 07:54:40 +00:00
Ulrich Drepper
5429ff760a (libc_locked_map_ptr): Add new first parameter, used as class for definition.
* nscd/nscd-client.h (libc_locked_map_ptr): Add new first
	parameter, used as class for definition.
	* nscd/nscd_getpw_r.c: Adjust for libc_locked_map_ptr change.
	(pw_map_free): Ensure no crash after memory is freed.
	* nscd/nscd_getgr.c: Likewise.  Make map externally visible.
	* nscd/nscd_gethst.c: Likewise.
	* nscd/nscd_getai.c: Use map from nscd_gethost.c.
	* nscd/nscd_initgroups.c: Use map from nscd_getgr.c.
2004-11-10 07:50:03 +00:00
Ulrich Drepper
81b5ae0811 Update.
2004-11-09  Ulrich Drepper  <drepper@redhat.com>

	* nscd/nscd_getai.c: Add some checks to detect corrupt databases.
	* nscd/nscd_getgr_r.c: Likewise
	* nscd/nscd_gethst_r.c: Likewise.
	* nscd/nscd_getpw_r.c: Likewise
2004-11-10 07:26:28 +00:00
Ulrich Drepper
b4ae56bdc8 Update.
2004-11-09  Jakub Jelinek  <jakub@redhat.com>

	* posix/regcomp.c (calc_eclosure_iter): Don't access
	dfa->edests[node].elems[0] if dfa->edests[node].nelem == 0.
	* posix/rxspencer/tests: Add 5 new tests.
2004-11-10 00:50:40 +00:00
Ulrich Drepper
e00a230282 value correctly. Patch by Mitsuru Kanda <mk@karaba.org>. 2004-11-10 00:38:10 +00:00
Ulrich Drepper
5d79df57b9 Update.
2004-11-09  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/unix/sysv/linux/ifaddrs.c: Determine sin6_scope_id field
	value correctly.
2004-11-10 00:37:05 +00:00
Ulrich Drepper
948603eeb0 Update.
2004-11-09  Ulrich Drepper  <drepper@redhat.com>

	* Makefile (tests): Add tst-exit2.
	* tst-exit2.c: New file.
2004-11-09 23:12:36 +00:00
Ulrich Drepper
59adcf7aa0 (tests): Add tst-exit2. 2004-11-09 23:11:12 +00:00
Roland McGrath
ba5ffd2af2 [BZ #530]
2004-11-09  Roland McGrath  <roland@redhat.com>
	[BZ #530]
	* sysdeps/pthread/createthread.c (do_clone): Increment __nptl_nthreads
	here, before calling clone.
	* pthread_create.c (start_thread): Don't do it here.

2004-11-04  Roland McGrath  <roland@redhat.com>

	* sysdeps/unix/sysv/linux/pthread_getcpuclockid.c: New file.
2004-11-09 21:52:54 +00:00
Roland McGrath
fd5d6a6294 [BZ #530]
2004-11-09  Roland McGrath  <roland@redhat.com>
	[BZ #530]
	* sysdeps/pthread/createthread.c (do_clone): Increment __nptl_nthreads
	here, before calling clone.
	* pthread_create.c (start_thread): Don't do it here.
2004-11-09 21:52:49 +00:00
Ulrich Drepper
d1e0c70024 Pretty printing. 2004-11-09 09:12:14 +00:00
Ulrich Drepper
51cd2fbfb8 Update.
2004-11-04  Jakub Jelinek  <jakub@redhat.com>

	* libio/fileops.c (_IO_new_file_seekoff): If mode is 0 and
	fp->_offset == _IO_pos_BAD, just call _IO_SYSSEEK (fp, 0, dir)
	and if successful set fp->_offset.
	* libio/Makefile (tests): Add bug-ungetc3.
	* libio/bug-ungetc3.c: New test.
2004-11-09 07:05:27 +00:00
Ulrich Drepper
eca29725d1 (_IO_new_file_seekoff): If mode is 0 and fp->_offset == _IO_pos_BAD, just call _IO_SYSSEEK (fp, 0, dir) and if successful set fp->_offset. 2004-11-09 07:04:08 +00:00
Roland McGrath
936668d369 * sysdeps/gnu/_G_config.h (_G_HAVE_MREMAP): Define symbol.
* sysdeps/mach/hurd/_G_config.h: New file.
	* libio/fileops.c (mmap_remap_check) [__linux__]: Replaced with
	[_G_HAVE_MREMAP].
2004-11-08 23:15:54 +00:00
Roland McGrath
eaae7493d4 2004-11-03 Marcus Brinkmann <marcus@gnu.org>
* sysdeps/gnu/_G_config.h (_G_HAVE_MREMAP): Define symbol.
	* sysdeps/mach/hurd/_G_config.h: New file.
	* libio/fileops.c (mmap_remap_check) [__linux__]: Replaced with
	[_G_HAVE_MREMAP].
2004-11-08 23:15:48 +00:00
Ulrich Drepper
e40a38b383 Update.
2004-11-08  Ulrich Drepper  <drepper@redhat.com>

	* posix/regcomp.c (utf8_sb_map): Define.
	(free_dfa_content): Don't free dfa->sb_char if it's a pointer to
	utf8_sb_map.
	(init_dfa): Use utf8_sb_map instead of initializing memory when the
	encoding is UTF-8.

	* posix/regcomp.c (init_dfa): Get the codeset name outside glibc as
	well.  Check if it is spelled UTF8 as well as UTF-8, and check
	case-insensitively.  Set dfa->map_notascii manually when outside
	glibc.
	* posix/regex_internal.c (build_wcs_upper_buffer) [!_LIBC]: Enable
	optimizations based on map_notascii.
	* posix/regex_internal.h [HAVE_LANGINFO_H || HAVE_LANGINFO_CODESET
	|| _LIBC]: Include langinfo.h.

	* posix/regex_internal.h (struct re_backref_cache_entry): Add "more"
	field.
	* posix/regexec.c (check_dst_limits): Hoist computation of the source
	and destination bkref_idx out of the loop.  Pass it to
	check_dst_limits_calc_pos.
	(check_dst_limits_calc_pos_1): New function, containing the recursive
	loop of check_dst_limits_calc_pos; uses the "more" field of
	struct re_backref_cache to control the loop.
	(check_dst_limits_calc_pos): Store into "boundaries" the position
	relative to lim's start and end positions.  Do not accept eclosures,
	accept bkref_idx instead.  Call check_dst_limits_calc_pos_1 to do the
	work.
	(sift_states_bkref): Use the "more" field of struct re_backref_cache
	to control the loop.  A big "if" was turned into a continue and the
	function was reindented.
	(get_subexp): Use the "more" field of struct re_backref_cache
	to control the loop.
	(match_ctx_add_entry): Initialize the bkref_ents' "more" field.
	(search_cur_bkref_entry): Return -1 if out of bounds.

	* posix/regexec.c (empty_set): Remove.
	(sift_states_backward): Remove cur_src variable.  Move inner loop
	to build_sifted_states.
	(build_sifted_states): Extract from sift_states_backward.  Do not
	use empty_set.
	(update_cur_sifted_state): Do not use empty_set.  Special case
	dest_nodes->nelem == 0.
2004-11-08 22:49:44 +00:00
Ulrich Drepper
d2c38eb3fa Update.
2004-11-03  Paolo Bonzini  <bonzini@gnu.org>

	* posix/regex_internal.h (struct re_backref_cache_entry): Remove flag
	field.
	(struct re_sift_context_t): Remove cur_bkref, cls_subexp_idx,
	check_subexp fields.  Move limits last.
	* posix/regexec.c (match_ctx_clear_flag): Remove.
	(sift_ctx_init): Remove check_subexp parameter.  Do not set removed
	fields.  Callers adjusted.
	(expand_bkref_cache): Remove last_str parameter.  Callers adjusted.
	(re_search_internal): Remove fast_translate variable.
	(update_cur_sifted_state): Pass candidates as the final parameter
	to sift_states_bkref.
	(sift_states_bkref): Change last unused parameter to be "candidates",
	do not fetch candidates into a local variable.
	Remove dead test for "node == sctx->bkref", and the cur_bkref_idx
	variable.
	Remove loops that set/reset the flag field of backref cache entries.
	(check_arrival_add_next_nodes): Use a signed int to hold the return
	value of re_node_set_insert.
	(group_nodes_into_DFAstates): Likewise.
	(match_ctx_add_entry): Do not set the flag field of the new entry.
2004-11-08 16:07:55 +00:00
Ulrich Drepper
a705c0d860 (struct re_backref_cache_entry): Remove flag field. (struct re_sift_context_t): Remove cur_bkref, cls_subexp_idx, check_subexp fields. Move limits last. 2004-11-08 16:06:36 +00:00