The R Project SVN R

Rev

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

Rev 33628 Rev 33639
Line 1835... Line 1835...
1835
	    s->sxpinfo = UnmarkedNodeTemplate.sxpinfo;
1835
	    s->sxpinfo = UnmarkedNodeTemplate.sxpinfo;
1836
	    SET_NODE_CLASS(s, node_class);
1836
	    SET_NODE_CLASS(s, node_class);
1837
	    R_SmallVallocSize += alloc_size;
1837
	    R_SmallVallocSize += alloc_size;
1838
	}
1838
	}
1839
	else {
1839
	else {
1840
	    s = NULL; /* initialize to suppress warning */
-
 
1841
	    Rboolean success = FALSE;
1840
	    Rboolean success = FALSE;
-
 
1841
	    s = NULL; /* initialize to suppress warning */
1842
	    if (size < (R_SIZE_T_MAX / sizeof(VECREC)) - sizeof(SEXPREC_ALIGN)) {
1842
	    if (size < (R_SIZE_T_MAX / sizeof(VECREC)) - sizeof(SEXPREC_ALIGN)) {
1843
		s = malloc(sizeof(SEXPREC_ALIGN) + size * sizeof(VECREC));
1843
		s = malloc(sizeof(SEXPREC_ALIGN) + size * sizeof(VECREC));
1844
		if (s == NULL) {
1844
		if (s == NULL) {
-
 
1845
		    /* If we are near the address space limit, we
-
 
1846
		       might be short of address space.  So return
-
 
1847
		       all unused objects to malloc and try again. */
1845
		    R_gc_internal(alloc_size);
1848
		    R_gc_internal(alloc_size);
1846
		    s = malloc(sizeof(SEXPREC_ALIGN) + size * sizeof(VECREC));
1849
		    s = malloc(sizeof(SEXPREC_ALIGN) + size * sizeof(VECREC));
1847
		}
1850
		}
1848
		if (s != NULL) success = TRUE;
1851
		if (s != NULL) success = TRUE;
1849
	    }
1852
	    }