0
0
mirror of https://github.com/vim/vim.git synced 2025-09-30 04:44:14 -04:00

updated for version 7.3.1036

Problem:    Can't build on HP-UX.
Solution:   Give the union a name. (John Marriott)
This commit is contained in:
Bram Moolenaar
2013-05-28 22:52:16 +02:00
parent 4ac6676cee
commit f9e56b2b03
2 changed files with 65 additions and 62 deletions

View File

@@ -2493,20 +2493,20 @@ typedef struct
{ {
int in_use; /* number of subexpr with useful info */ int in_use; /* number of subexpr with useful info */
/* When REG_MULTI is TRUE multilist is used, otherwise linelist. */ /* When REG_MULTI is TRUE list.multi is used, otherwise list.line. */
union union
{ {
struct multipos struct multipos
{ {
lpos_T start; lpos_T start;
lpos_T end; lpos_T end;
} multilist[NSUBEXP]; } multi[NSUBEXP];
struct linepos struct linepos
{ {
char_u *start; char_u *start;
char_u *end; char_u *end;
} linelist[NSUBEXP]; } line[NSUBEXP];
}; } list;
} regsub_T; } regsub_T;
/* nfa_thread_T contains execution information of a NFA state */ /* nfa_thread_T contains execution information of a NFA state */
@@ -2536,15 +2536,15 @@ log_subexpr(sub)
if (REG_MULTI) if (REG_MULTI)
fprintf(log_fd, "\n *** group %d, start: c=%d, l=%d, end: c=%d, l=%d", fprintf(log_fd, "\n *** group %d, start: c=%d, l=%d, end: c=%d, l=%d",
j, j,
sub->multilist[j].start.col, sub->list.multi[j].start.col,
(int)sub->multilist[j].start.lnum, (int)sub->list.multi[j].start.lnum,
sub->multilist[j].end.col, sub->list.multi[j].end.col,
(int)sub->multilist[j].end.lnum); (int)sub->list.multi[j].end.lnum);
else else
fprintf(log_fd, "\n *** group %d, start: \"%s\", end: \"%s\"", fprintf(log_fd, "\n *** group %d, start: \"%s\", end: \"%s\"",
j, j,
(char *)sub->linelist[j].start, (char *)sub->list.line[j].start,
(char *)sub->linelist[j].end); (char *)sub->list.line[j].end);
fprintf(log_fd, "\n"); fprintf(log_fd, "\n");
} }
#endif #endif
@@ -2626,12 +2626,12 @@ addstate(l, state, sub, off)
{ {
/* Copy the match start and end positions. */ /* Copy the match start and end positions. */
if (REG_MULTI) if (REG_MULTI)
mch_memmove(&lastthread->sub.multilist[0], mch_memmove(&lastthread->sub.list.multi[0],
&sub->multilist[0], &sub->list.multi[0],
sizeof(struct multipos) * sub->in_use); sizeof(struct multipos) * sub->in_use);
else else
mch_memmove(&lastthread->sub.linelist[0], mch_memmove(&lastthread->sub.list.line[0],
&sub->linelist[0], &sub->list.line[0],
sizeof(struct linepos) * sub->in_use); sizeof(struct linepos) * sub->in_use);
} }
} }
@@ -2705,7 +2705,7 @@ addstate(l, state, sub, off)
{ {
if (subidx < sub->in_use) if (subidx < sub->in_use)
{ {
save_lpos = sub->multilist[subidx].start; save_lpos = sub->list.multi[subidx].start;
save_in_use = -1; save_in_use = -1;
} }
else else
@@ -2713,20 +2713,20 @@ addstate(l, state, sub, off)
save_in_use = sub->in_use; save_in_use = sub->in_use;
for (i = sub->in_use; i < subidx; ++i) for (i = sub->in_use; i < subidx; ++i)
{ {
sub->multilist[i].start.lnum = -1; sub->list.multi[i].start.lnum = -1;
sub->multilist[i].end.lnum = -1; sub->list.multi[i].end.lnum = -1;
} }
sub->in_use = subidx + 1; sub->in_use = subidx + 1;
} }
if (off == -1) if (off == -1)
{ {
sub->multilist[subidx].start.lnum = reglnum + 1; sub->list.multi[subidx].start.lnum = reglnum + 1;
sub->multilist[subidx].start.col = 0; sub->list.multi[subidx].start.col = 0;
} }
else else
{ {
sub->multilist[subidx].start.lnum = reglnum; sub->list.multi[subidx].start.lnum = reglnum;
sub->multilist[subidx].start.col = sub->list.multi[subidx].start.col =
(colnr_T)(reginput - regline + off); (colnr_T)(reginput - regline + off);
} }
} }
@@ -2734,7 +2734,7 @@ addstate(l, state, sub, off)
{ {
if (subidx < sub->in_use) if (subidx < sub->in_use)
{ {
save_ptr = sub->linelist[subidx].start; save_ptr = sub->list.line[subidx].start;
save_in_use = -1; save_in_use = -1;
} }
else else
@@ -2742,12 +2742,12 @@ addstate(l, state, sub, off)
save_in_use = sub->in_use; save_in_use = sub->in_use;
for (i = sub->in_use; i < subidx; ++i) for (i = sub->in_use; i < subidx; ++i)
{ {
sub->linelist[i].start = NULL; sub->list.line[i].start = NULL;
sub->linelist[i].end = NULL; sub->list.line[i].end = NULL;
} }
sub->in_use = subidx + 1; sub->in_use = subidx + 1;
} }
sub->linelist[subidx].start = reginput + off; sub->list.line[subidx].start = reginput + off;
} }
addstate(l, state->out, sub, off); addstate(l, state->out, sub, off);
@@ -2755,9 +2755,9 @@ addstate(l, state, sub, off)
if (save_in_use == -1) if (save_in_use == -1)
{ {
if (REG_MULTI) if (REG_MULTI)
sub->multilist[subidx].start = save_lpos; sub->list.multi[subidx].start = save_lpos;
else else
sub->linelist[subidx].start = save_ptr; sub->list.line[subidx].start = save_ptr;
} }
else else
sub->in_use = save_in_use; sub->in_use = save_in_use;
@@ -2793,31 +2793,31 @@ addstate(l, state, sub, off)
sub->in_use = subidx + 1; sub->in_use = subidx + 1;
if (REG_MULTI) if (REG_MULTI)
{ {
save_lpos = sub->multilist[subidx].end; save_lpos = sub->list.multi[subidx].end;
if (off == -1) if (off == -1)
{ {
sub->multilist[subidx].end.lnum = reglnum + 1; sub->list.multi[subidx].end.lnum = reglnum + 1;
sub->multilist[subidx].end.col = 0; sub->list.multi[subidx].end.col = 0;
} }
else else
{ {
sub->multilist[subidx].end.lnum = reglnum; sub->list.multi[subidx].end.lnum = reglnum;
sub->multilist[subidx].end.col = sub->list.multi[subidx].end.col =
(colnr_T)(reginput - regline + off); (colnr_T)(reginput - regline + off);
} }
} }
else else
{ {
save_ptr = sub->linelist[subidx].end; save_ptr = sub->list.line[subidx].end;
sub->linelist[subidx].end = reginput + off; sub->list.line[subidx].end = reginput + off;
} }
addstate(l, state->out, sub, off); addstate(l, state->out, sub, off);
if (REG_MULTI) if (REG_MULTI)
sub->multilist[subidx].end = save_lpos; sub->list.multi[subidx].end = save_lpos;
else else
sub->linelist[subidx].end = save_ptr; sub->list.line[subidx].end = save_ptr;
sub->in_use = save_in_use; sub->in_use = save_in_use;
break; break;
} }
@@ -2975,13 +2975,13 @@ retempty:
if (REG_MULTI) if (REG_MULTI)
{ {
if (sub->multilist[subidx].start.lnum < 0 if (sub->list.multi[subidx].start.lnum < 0
|| sub->multilist[subidx].end.lnum < 0) || sub->list.multi[subidx].end.lnum < 0)
goto retempty; goto retempty;
/* TODO: line breaks */ /* TODO: line breaks */
len = sub->multilist[subidx].end.col len = sub->list.multi[subidx].end.col
- sub->multilist[subidx].start.col; - sub->list.multi[subidx].start.col;
if (cstrncmp(regline + sub->multilist[subidx].start.col, if (cstrncmp(regline + sub->list.multi[subidx].start.col,
reginput, &len) == 0) reginput, &len) == 0)
{ {
*bytelen = len; *bytelen = len;
@@ -2990,11 +2990,11 @@ retempty:
} }
else else
{ {
if (sub->linelist[subidx].start == NULL if (sub->list.line[subidx].start == NULL
|| sub->linelist[subidx].end == NULL) || sub->list.line[subidx].end == NULL)
goto retempty; goto retempty;
len = (int)(sub->linelist[subidx].end - sub->linelist[subidx].start); len = (int)(sub->list.line[subidx].end - sub->list.line[subidx].start);
if (cstrncmp(sub->linelist[subidx].start, reginput, &len) == 0) if (cstrncmp(sub->list.line[subidx].start, reginput, &len) == 0)
{ {
*bytelen = len; *bytelen = len;
return TRUE; return TRUE;
@@ -3260,15 +3260,16 @@ nfa_regmatch(start, submatch, m)
if (REG_MULTI) if (REG_MULTI)
for (j = 0; j < submatch->in_use; j++) for (j = 0; j < submatch->in_use; j++)
{ {
submatch->multilist[j].start = submatch->list.multi[j].start =
t->sub.multilist[j].start; t->sub.list.multi[j].start;
submatch->multilist[j].end = t->sub.multilist[j].end; submatch->list.multi[j].end = t->sub.list.multi[j].end;
} }
else else
for (j = 0; j < submatch->in_use; j++) for (j = 0; j < submatch->in_use; j++)
{ {
submatch->linelist[j].start = t->sub.linelist[j].start; submatch->list.line[j].start =
submatch->linelist[j].end = t->sub.linelist[j].end; t->sub.list.line[j].start;
submatch->list.line[j].end = t->sub.list.line[j].end;
} }
#ifdef ENABLE_LOG #ifdef ENABLE_LOG
log_subexpr(&t->sub); log_subexpr(&t->sub);
@@ -3355,14 +3356,14 @@ nfa_regmatch(start, submatch, m)
if (REG_MULTI) if (REG_MULTI)
for (j = 1; j < m->in_use; j++) for (j = 1; j < m->in_use; j++)
{ {
t->sub.multilist[j].start = m->multilist[j].start; t->sub.list.multi[j].start = m->list.multi[j].start;
t->sub.multilist[j].end = m->multilist[j].end; t->sub.list.multi[j].end = m->list.multi[j].end;
} }
else else
for (j = 1; j < m->in_use; j++) for (j = 1; j < m->in_use; j++)
{ {
t->sub.linelist[j].start = m->linelist[j].start; t->sub.list.line[j].start = m->list.line[j].start;
t->sub.linelist[j].end = m->linelist[j].end; t->sub.list.line[j].end = m->list.line[j].end;
} }
t->sub.in_use = m->in_use; t->sub.in_use = m->in_use;
@@ -3907,13 +3908,13 @@ nfa_regtry(start, col)
if (REG_MULTI) if (REG_MULTI)
{ {
/* Use 0xff to set lnum to -1 */ /* Use 0xff to set lnum to -1 */
vim_memset(sub.multilist, 0xff, sizeof(struct multipos) * nfa_nsubexpr); vim_memset(sub.list.multi, 0xff, sizeof(struct multipos) * nfa_nsubexpr);
vim_memset(m.multilist, 0xff, sizeof(struct multipos) * nfa_nsubexpr); vim_memset(m.list.multi, 0xff, sizeof(struct multipos) * nfa_nsubexpr);
} }
else else
{ {
vim_memset(sub.linelist, 0, sizeof(struct linepos) * nfa_nsubexpr); vim_memset(sub.list.line, 0, sizeof(struct linepos) * nfa_nsubexpr);
vim_memset(m.linelist, 0, sizeof(struct linepos) * nfa_nsubexpr); vim_memset(m.list.line, 0, sizeof(struct linepos) * nfa_nsubexpr);
} }
sub.in_use = 0; sub.in_use = 0;
m.in_use = 0; m.in_use = 0;
@@ -3926,8 +3927,8 @@ nfa_regtry(start, col)
{ {
for (i = 0; i < sub.in_use; i++) for (i = 0; i < sub.in_use; i++)
{ {
reg_startpos[i] = sub.multilist[i].start; reg_startpos[i] = sub.list.multi[i].start;
reg_endpos[i] = sub.multilist[i].end; reg_endpos[i] = sub.list.multi[i].end;
} }
if (reg_startpos[0].lnum < 0) if (reg_startpos[0].lnum < 0)
@@ -3949,8 +3950,8 @@ nfa_regtry(start, col)
{ {
for (i = 0; i < sub.in_use; i++) for (i = 0; i < sub.in_use; i++)
{ {
reg_startp[i] = sub.linelist[i].start; reg_startp[i] = sub.list.line[i].start;
reg_endp[i] = sub.linelist[i].end; reg_endp[i] = sub.list.line[i].end;
} }
if (reg_startp[0] == NULL) if (reg_startp[0] == NULL)

View File

@@ -728,6 +728,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1036,
/**/ /**/
1035, 1035,
/**/ /**/