X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/f3ead217b8636f623399e66bd937b1c51774d4af..071863b3d88c232c10348b7c38378c47d363857c:/src/uniqstr.c diff --git a/src/uniqstr.c b/src/uniqstr.c index f2954443..37345dc7 100644 --- a/src/uniqstr.c +++ b/src/uniqstr.c @@ -1,6 +1,6 @@ /* Keep a unique copy of strings. - Copyright (C) 2002-2005, 2009-2012 Free Software Foundation, Inc. + Copyright (C) 2002-2005, 2009-2013 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. @@ -77,7 +77,8 @@ uniqstr_vsprintf (char const *format, ...) void uniqstr_assert (char const *str) { - if (!hash_lookup (uniqstrs_table, str)) + uniqstr *s = hash_lookup (uniqstrs_table, str); + if (!s || s != (uniqstr *)str) { error (0, 0, "not a uniqstr: %s", quotearg (str)); @@ -103,7 +104,17 @@ uniqstr_print_processor (void *ustr, void *null ATTRIBUTE_UNUSED) return uniqstr_print (ustr); } - + +int +uniqstr_cmp (uniqstr l, uniqstr r) +{ + return (l == r ? 0 + : !l ? -1 + : !r ? +1 + : strcmp (l, r)); +} + + /*-----------------------. | A uniqstr hash table. | `-----------------------*/ @@ -120,6 +131,7 @@ hash_uniqstr (void const *m, size_t tablesize) return hash_string (m, tablesize); } + /*----------------------------. | Create the uniqstrs table. | `----------------------------*/