Skip to content

Commit

Permalink
Fix format widths for very long strings
Browse files Browse the repository at this point in the history
  • Loading branch information
evanmiller committed Sep 12, 2020
1 parent 0256241 commit e727bcc
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 7 deletions.
16 changes: 9 additions & 7 deletions src/spss/readstat_sav_parse.c
Expand Up @@ -682,18 +682,20 @@ readstat_error_t sav_parse_very_long_string_record(void *data, int count, sav_ct
varlookup_t *found = bsearch(temp_key, table, var_count, sizeof(varlookup_t), &compare_key_varlookup);
if (found) {
ctx->varinfo[found->index]->string_length = temp_val;
ctx->varinfo[found->index]->write_format.width = temp_val;
ctx->varinfo[found->index]->print_format.width = temp_val;
}
}
break;
case 1:
#line 177 "src/spss/readstat_sav_parse.rl"
#line 179 "src/spss/readstat_sav_parse.rl"
{
memcpy(temp_key, str_start, str_len);
temp_key[str_len] = '\0';
}
break;
case 2:
#line 182 "src/spss/readstat_sav_parse.rl"
#line 184 "src/spss/readstat_sav_parse.rl"
{
if ((*p) != '\0') {
unsigned char digit = (*p) - '0';
Expand All @@ -706,18 +708,18 @@ readstat_error_t sav_parse_very_long_string_record(void *data, int count, sav_ct
}
break;
case 3:
#line 195 "src/spss/readstat_sav_parse.rl"
#line 197 "src/spss/readstat_sav_parse.rl"
{ str_start = p; }
break;
case 4:
#line 195 "src/spss/readstat_sav_parse.rl"
#line 197 "src/spss/readstat_sav_parse.rl"
{ str_len = p - str_start; }
break;
case 5:
#line 197 "src/spss/readstat_sav_parse.rl"
#line 199 "src/spss/readstat_sav_parse.rl"
{ temp_val = 0; }
break;
#line 721 "src/spss/readstat_sav_parse.c"
#line 723 "src/spss/readstat_sav_parse.c"
}
}

Expand All @@ -730,7 +732,7 @@ readstat_error_t sav_parse_very_long_string_record(void *data, int count, sav_ct
_out: {}
}

#line 205 "src/spss/readstat_sav_parse.rl"
#line 207 "src/spss/readstat_sav_parse.rl"


if (cs < 12 || p != pe) {
Expand Down
2 changes: 2 additions & 0 deletions src/spss/readstat_sav_parse.rl
Expand Up @@ -171,6 +171,8 @@ readstat_error_t sav_parse_very_long_string_record(void *data, int count, sav_ct
varlookup_t *found = bsearch(temp_key, table, var_count, sizeof(varlookup_t), &compare_key_varlookup);
if (found) {
ctx->varinfo[found->index]->string_length = temp_val;
ctx->varinfo[found->index]->write_format.width = temp_val;
ctx->varinfo[found->index]->print_format.width = temp_val;
}
}

Expand Down

0 comments on commit e727bcc

Please sign in to comment.