Avoid placing duplicate feature identifiers in the (features) list

In my case "bsd" was present twice on my *BSD boxes
This commit is contained in:
Kris Katterjohn 2018-03-31 14:19:18 -05:00
parent 731c544872
commit dc80bf4f04

9
sexp.c
View file

@ -438,7 +438,7 @@ static const char* sexp_initial_features[] = {
void sexp_init_context_globals (sexp ctx) {
const char** features;
int i, endianess_check = 1;
sexp type, *vec, print=NULL;
sexp feature, type, *vec, print=NULL;
sexp_context_globals(ctx)
= sexp_make_vector(ctx, sexp_make_fixnum(SEXP_G_NUM_GLOBALS), SEXP_VOID);
#if ! SEXP_USE_GLOBAL_SYMBOLS
@ -475,8 +475,11 @@ void sexp_init_context_globals (sexp ctx) {
sexp_push(ctx, sexp_global(ctx, SEXP_G_FEATURES), SEXP_FALSE);
sexp_car(sexp_global(ctx, SEXP_G_FEATURES)) = sexp_intern(ctx, (*(unsigned char*) &endianess_check) ? "little-endian" : "big-endian", -1);
for (features=sexp_initial_features; *features; features++) {
sexp_push(ctx, sexp_global(ctx, SEXP_G_FEATURES), SEXP_FALSE);
sexp_car(sexp_global(ctx, SEXP_G_FEATURES)) = sexp_intern(ctx, *features, -1);
feature = sexp_intern(ctx, *features, -1);
if (sexp_not(sexp_memq(ctx, feature, sexp_global(ctx, SEXP_G_FEATURES)))) {
sexp_push(ctx, sexp_global(ctx, SEXP_G_FEATURES), SEXP_FALSE);
sexp_car(sexp_global(ctx, SEXP_G_FEATURES)) = feature;
}
}
sexp_global(ctx, SEXP_G_NUM_TYPES) = sexp_make_fixnum(SEXP_NUM_CORE_TYPES);
sexp_global(ctx, SEXP_G_TYPES)