Browse Source

make regoff_t and regex_t match C++ ABI

for regoff_t, it's impossible to match on 64-bit archs because glibc
defined the type in a non-conforming way. however this change makes
the type match on 32-bit archs.
Rich Felker 10 years ago
parent
commit
8327ae0cb2
2 changed files with 3 additions and 3 deletions
  1. 1 0
      include/alltypes.h.in
  2. 2 3
      include/regex.h

+ 1 - 0
include/alltypes.h.in

@@ -3,6 +3,7 @@ TYPEDEF unsigned _Addr uintptr_t;
 TYPEDEF _Addr ptrdiff_t;
 TYPEDEF _Addr ssize_t;
 TYPEDEF _Addr intptr_t;
+TYPEDEF _Addr regoff_t;
 
 TYPEDEF signed char     int8_t;
 TYPEDEF short           int16_t;

+ 2 - 3
include/regex.h

@@ -7,13 +7,12 @@ extern "C" {
 
 #include <features.h>
 
+#define __NEED_regoff_t
 #define __NEED_size_t
 
 #include <bits/alltypes.h>
 
-typedef long regoff_t;
-
-typedef struct {
+typedef struct re_pattern_buffer {
 	size_t re_nsub;
 	void *__opaque, *__padding[4];
 	size_t __nsub2;