The R Project SVN R

Rev

Rev 63187 | Rev 67595 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 63187 Rev 63188
Line 186... Line 186...
186
 
186
 
187
int attribute_hidden R_TextBufferInit(TextBuffer *txtb, SEXP text)
187
int attribute_hidden R_TextBufferInit(TextBuffer *txtb, SEXP text)
188
{
188
{
189
    int i, k, l, n;
189
    int i, k, l, n;
190
    if (isString(text)) {
190
    if (isString(text)) {
-
 
191
	// translateChar might allocate
-
 
192
	void *vmax = vmaxget();
191
	n = length(text);
193
	n = length(text);
192
	l = 0;
194
	l = 0;
193
	for (i = 0; i < n; i++) {
195
	for (i = 0; i < n; i++) {
194
	    if (STRING_ELT(text, i) != R_NilValue) {
196
	    if (STRING_ELT(text, i) != R_NilValue) {
195
		k = (int) strlen(translateChar(STRING_ELT(text, i)));
197
		k = (int) strlen(translateChar(STRING_ELT(text, i)));
196
		if (k > l)
198
		if (k > l)
197
		    l = k;
199
		    l = k;
198
	    }
200
	    }
199
	}
201
	}
-
 
202
	vmaxset(vmax);
200
	txtb->vmax = vmaxget();
203
	txtb->vmax = vmax;
201
	txtb->buf = (unsigned char *)R_alloc(l+2, sizeof(char)); /* '\n' and '\0' */
204
	txtb->buf = (unsigned char *)R_alloc(l+2, sizeof(char)); /* '\n' and '\0' */
202
	txtb->bufp = txtb->buf;
205
	txtb->bufp = txtb->buf;
203
	txtb->text = text;
206
	txtb->text = text;
204
	txtb->ntext = n;
207
	txtb->ntext = n;
205
	txtb->offset = 0;
208
	txtb->offset = 0;