Merge "Fix regerror(..., nullptr, 0)."

This commit is contained in:
Elliott Hughes 2016-02-13 00:59:42 +00:00 committed by Gerrit Code Review
commit 925bf56447
3 changed files with 19 additions and 7 deletions

View File

@ -850,7 +850,9 @@ include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(libc_upstream_netbsd_src_files)
LOCAL_CFLAGS := \
$(libc_common_cflags) \
-Wno-sign-compare -Wno-uninitialized \
-Wno-sign-compare \
-Wno-uninitialized \
-Wno-unused-parameter \
-DPOSIX_MISTAKE \
-include netbsd-compat.h \

View File

@ -20,17 +20,16 @@
#define _BSD_SOURCE
#define _GNU_SOURCE
// NetBSD uses _DIAGASSERT to null-check arguments and the like.
#include <assert.h>
#define _DIAGASSERT(e) ((e) ? (void) 0 : __assert2(__FILE__, __LINE__, __func__, #e))
// TODO: update our <sys/cdefs.h> to support this properly.
#define __type_fit(t, a) (0 == 0)
// NetBSD uses _DIAGASSERT to null-check arguments and the like,
// but it's clear from the number of mistakes in their assertions
// that they don't actually test or ship with this.
#define _DIAGASSERT(e) /* nothing */
// TODO: we don't yet have thread-safe environment variables.
#define __readlockenv() 0
#define __unlockenv() 0
#include <sys/cdefs.h>
#include <stddef.h>
__LIBC_HIDDEN__ int reallocarr(void*, size_t, size_t);

View File

@ -46,3 +46,14 @@ TEST(regex, match_offsets) {
ASSERT_EQ(2, matches[0].rm_eo);
regfree(&re);
}
TEST(regex, regerror_NULL_0) {
regex_t re;
int error = regcomp(&re, "*", REG_EXTENDED);
ASSERT_NE(0, error);
// Passing a null pointer and a size of 0 is a legitimate way to ask
// how large a buffer we would need for the error message.
int error_length = regerror(error, &re, nullptr, 0);
ASSERT_GT(error_length, 0);
}