X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fgdb_obstack.h;h=9b1d907678f58109ae44bab3786722c1bec3bb62;hb=4d91c2a4677b90802c8d369190927921bf8ee97d;hp=db849a06444c2c22138a39dc42157b1fc8149dfd;hpb=efba19b06a6f2baacb3920599f970d1333ffc358;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/gdb_obstack.h b/gdb/gdb_obstack.h index db849a0644..9b1d907678 100644 --- a/gdb/gdb_obstack.h +++ b/gdb/gdb_obstack.h @@ -1,6 +1,6 @@ /* Obstack wrapper for GDB. - Copyright (C) 2002-2019 Free Software Foundation, Inc. + Copyright (C) 2002-2020 Free Software Foundation, Inc. This file is part of GDB. @@ -105,6 +105,17 @@ obstack_strdup (struct obstack *obstackp, const std::string &string) string.size ()); } +/* Duplicate the first N characters of STRING, returning a + \0-terminated string that's allocated on the obstack OBSTACKP. + Note that exactly N characters are copied, even if STRING is + shorter. */ + +static inline char * +obstack_strndup (struct obstack *obstackp, const char *string, size_t n) +{ + return (char *) obstack_copy0 (obstackp, string, n); +} + /* An obstack that frees itself on scope exit. */ struct auto_obstack : obstack { @@ -114,6 +125,8 @@ struct auto_obstack : obstack ~auto_obstack () { obstack_free (this, NULL); } + DISABLE_COPY_AND_ASSIGN (auto_obstack); + /* Free all memory in the obstack but leave it valid for further allocation. */ void clear ()