diff --git a/src/sas/readstat_sas7bdat_read.c b/src/sas/readstat_sas7bdat_read.c index cca57e8..357a0c7 100644 --- a/src/sas/readstat_sas7bdat_read.c +++ b/src/sas/readstat_sas7bdat_read.c @@ -971,7 +971,7 @@ static readstat_error_t sas7bdat_parse_page_pass1(const char *page, size_t page_ } if (shp_info.compression == SAS_COMPRESSION_NONE) { sas_subheader_type_t subheader_type = sas7bdat_parse_subheader_type(page + shp_info.offset, ctx); - if (subheader_type == SAS_SUBHEADER_TYPE_COLUMN_TEXT) { + if (subheader_type == SAS_SUBHEADER_TYPE_COLUMN_NAME || subheader_type == SAS_SUBHEADER_TYPE_COLUMN_TEXT) { if ((retval = sas7bdat_parse_subheader(subheader_type, page + shp_info.offset, shp_info.len, ctx)) != READSTAT_OK) { goto cleanup; @@ -1059,7 +1059,7 @@ static readstat_error_t sas7bdat_parse_page_pass2(const char *page, size_t page_ goto cleanup; } } else { - if (subheader_type != SAS_SUBHEADER_TYPE_COLUMN_TEXT) { + if (subheader_type != SAS_SUBHEADER_TYPE_COLUMN_NAME && subheader_type != SAS_SUBHEADER_TYPE_COLUMN_TEXT) { if ((retval = sas7bdat_parse_subheader(subheader_type, page + shp_info.offset, shp_info.len, ctx)) != READSTAT_OK) { goto cleanup; } diff --git a/src/test/test_list.h b/src/test/test_list.h index 9b78c98..842735e 100644 --- a/src/test/test_list.h +++ b/src/test/test_list.h @@ -674,6 +674,94 @@ static rt_test_group_t _test_groups[] = { } } } + }, + + { + .label = "Many long column names in SAS", + .test_formats = RT_FORMAT_SAS7BDAT, + .rows = 0, + .columns = { + { .name = "one_of_many_long_column_names_1", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_2", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_3", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_4", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_5", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_6", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_7", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_8", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_9", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_10", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_11", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_12", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_13", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_14", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_15", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_16", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_17", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_18", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_19", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_20", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_21", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_22", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_23", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_24", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_25", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_26", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_27", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_28", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_29", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_30", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_31", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_32", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_33", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_34", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_35", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_36", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_37", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_38", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_39", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_40", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_41", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_42", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_43", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_44", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_45", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_46", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_47", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_48", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_49", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_50", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_51", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_52", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_53", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_54", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_55", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_56", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_57", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_58", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_59", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_60", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_61", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_62", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_63", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_64", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_65", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_66", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_67", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_68", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_69", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_70", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_71", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_72", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_73", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_74", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_75", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_76", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_77", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_78", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_79", .type = READSTAT_TYPE_STRING }, + { .name = "one_of_many_long_column_names_80", .type = READSTAT_TYPE_STRING } + } } } }, diff --git a/src/test/test_types.h b/src/test/test_types.h index 5783933..9d3b2ec 100644 --- a/src/test/test_types.h +++ b/src/test/test_types.h @@ -1,7 +1,7 @@ #include #define RT_MAX_ROWS 10 -#define RT_MAX_COLS 10 +#define RT_MAX_COLS 80 #define RT_MAX_LABEL_SETS 2 #define RT_MAX_NOTES 2 #define RT_MAX_STRING_REFS 3