|
|
|
@ -32,29 +32,6 @@ |
|
|
|
#include <sys/types.h> |
|
|
|
#include <sys/stat.h> |
|
|
|
|
|
|
|
#ifdef __GNUC__ |
|
|
|
# undef alloca |
|
|
|
# define alloca __builtin_alloca |
|
|
|
# define HAVE_ALLOCA 1 |
|
|
|
#else |
|
|
|
# ifdef _MSC_VER |
|
|
|
# include <malloc.h> |
|
|
|
# define alloca _alloca |
|
|
|
# else |
|
|
|
# if defined HAVE_ALLOCA_H || defined _LIBC |
|
|
|
# include <alloca.h> |
|
|
|
# else |
|
|
|
# ifdef _AIX |
|
|
|
#pragma alloca |
|
|
|
# else |
|
|
|
# ifndef alloca |
|
|
|
char *alloca (); |
|
|
|
# endif |
|
|
|
# endif |
|
|
|
# endif |
|
|
|
# endif |
|
|
|
#endif |
|
|
|
|
|
|
|
#include <stdlib.h> |
|
|
|
#include <string.h> |
|
|
|
|
|
|
|
@ -476,15 +453,6 @@ char *alloca (); |
|
|
|
# define munmap(addr, len) __munmap (addr, len) |
|
|
|
#endif |
|
|
|
|
|
|
|
/* For those losing systems which don't have `alloca' we have to add
|
|
|
|
some additional code emulating it. */ |
|
|
|
#ifdef HAVE_ALLOCA |
|
|
|
# define freea(p) /* nothing */ |
|
|
|
#else |
|
|
|
# define alloca(n) malloc (n) |
|
|
|
# define freea(p) free (p) |
|
|
|
#endif |
|
|
|
|
|
|
|
/* For systems that distinguish between text and binary I/O.
|
|
|
|
O_BINARY is usually declared in <fcntl.h>. */ |
|
|
|
#if !defined O_BINARY && defined _O_BINARY |
|
|
|
@ -982,9 +950,10 @@ _nl_load_domain (struct loaded_l10nfile *domain_file, |
|
|
|
sysdep_segments = (const struct sysdep_segment *) |
|
|
|
((char *) data |
|
|
|
+ W (domain->must_swap, data->sysdep_segments_offset)); |
|
|
|
sysdep_segment_values = |
|
|
|
(const char **) |
|
|
|
alloca (n_sysdep_segments * sizeof (const char *)); |
|
|
|
sysdep_segment_values = calloc |
|
|
|
(n_sysdep_segments, sizeof (const char *)); |
|
|
|
if (sysdep_segment_values == NULL) |
|
|
|
goto invalid; |
|
|
|
for (i = 0; i < n_sysdep_segments; i++) |
|
|
|
{ |
|
|
|
const char *name = |
|
|
|
@ -995,7 +964,7 @@ _nl_load_domain (struct loaded_l10nfile *domain_file, |
|
|
|
|
|
|
|
if (!(namelen > 0 && name[namelen - 1] == '\0')) |
|
|
|
{ |
|
|
|
freea (sysdep_segment_values); |
|
|
|
free (sysdep_segment_values); |
|
|
|
goto invalid; |
|
|
|
} |
|
|
|
|
|
|
|
@ -1046,7 +1015,7 @@ _nl_load_domain (struct loaded_l10nfile *domain_file, |
|
|
|
if (sysdepref >= n_sysdep_segments) |
|
|
|
{ |
|
|
|
/* Invalid. */ |
|
|
|
freea (sysdep_segment_values); |
|
|
|
free (sysdep_segment_values); |
|
|
|
goto invalid; |
|
|
|
} |
|
|
|
|
|
|
|
@ -1250,7 +1219,7 @@ _nl_load_domain (struct loaded_l10nfile *domain_file, |
|
|
|
domain->trans_sysdep_tab = NULL; |
|
|
|
} |
|
|
|
|
|
|
|
freea (sysdep_segment_values); |
|
|
|
free (sysdep_segment_values); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
|