/****************************************************************************
- * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2019,2020 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
#include <ctype.h>
-MODULE_ID("$Id: make_hash.c,v 1.27 2019/07/20 20:14:46 tom Exp $")
+MODULE_ID("$Id: make_hash.c,v 1.30 2020/01/18 17:02:38 tom Exp $")
/*
* _nc_make_hash_table()
*
* Computes the hashing function on the given string.
*
- * The current hash function is the sum of each consectutive pair
+ * The current hash function is the sum of each consecutive pair
* of characters, taken as two-byte integers, mod HASHTABSIZE.
*
*/
int col = 0;
-#if NO_LEAKS
if (buffer == 0) {
free(list);
list = 0;
return 0;
}
-#endif
if (*buffer != '#') {
if (list == 0) {
static char *
get_type(int type_mask)
{
- static char result[40];
+ static char result[80];
unsigned n;
_nc_STRCPY(result, L_PAREN, sizeof(result));
for (n = 0; n < 3; ++n) {
if ((1 << n) & type_mask) {
+ size_t want = 5 + strlen(typenames[n]);
+ if (want > sizeof(result)) {
+ fprintf(stderr, "Buffer is not large enough for %s + %s\n",
+ result, typenames[n]);
+ exit(EXIT_FAILURE);
+ }
if (result[1])
_nc_STRCAT(result, "|", sizeof(result));
_nc_STRCAT(result, "1<<", sizeof(result));
}
free(hash_table);
-#if NO_LEAKS
for (n = 0; (n < tablesize); ++n) {
free((void *) name_table[n].ute_name);
}
free(name_table);
parse_columns(0);
-#endif
+
return EXIT_SUCCESS;
}