[R-pkg-team] Bug#1103217: [PATCH] Fix for FTBFS with r-base-dev=4.5.0-1
liwenjun
liwenjun at kylinos.cn
Wed Apr 16 07:01:33 BST 2025
Package: src:r-bioc-affxparser
Version: 1.78.0-2
Severity: serious
Tags: ftbfs trixie sid
Dear maintainer:
Hi, I'm summitting a patch for fixing this FTBFS problem while building with r-base-dev=4.5.0-1 on Debian sid,trixie.
My patch Fix-FTBFS.patch replace Calloc() and Free() with R_Calloc() and R_Free(), accoding to the R-project's NEWS(R: R News <https://cran.r-project.org/doc/manuals/r-release/NEWS.html>)
And by the way, Please help me for uploading this patch to upstream if you think it's necessary.
Best regards,
liwenjun
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/r-pkg-team/attachments/20250416/ff065854/attachment-0001.htm>
-------------- next part --------------
Description: Fix FTBFS error on r-base-dev=4.5.0-1
This patch replace Calloc and Free to R_Calloc R_Free for fixing FTBFS errors on DEBIAN sid, trixy.
Accoding to the R-project's NEWS.(https://cran.r-project.org/doc/manuals/r-release/NEWS.html).
Latest version(4.5.0) has been changed those funtions to R_xxx.
Author: liwenjun <liwenjun at kylinos.cn>
Origin: other, None
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1103217
Last-Update: 2025-04-16
--- r-bioc-affxparser-1.78.0.orig/src/R_affx_bpmap_parser.cpp
+++ r-bioc-affxparser-1.78.0/src/R_affx_bpmap_parser.cpp
@@ -90,41 +90,41 @@ extern "C" {
SET_STRING_ELT(seqInfoNames, kk, mkChar("name"));
str = seq.GetName();
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
SET_VECTOR_ELT(seqInfo, kk++, ScalarString(mkChar(cstr)));
- Free(cstr);
+ R_Free(cstr);
SET_STRING_ELT(seqInfoNames, kk, mkChar("groupname"));
str = seq.GroupName();
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
SET_VECTOR_ELT(seqInfo, kk++,
ScalarString(mkChar(cstr)));
- Free(cstr);
+ R_Free(cstr);
SET_STRING_ELT(seqInfoNames, kk, mkChar("fullname"));
str = seq.FullName();
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
SET_VECTOR_ELT(seqInfo, kk++,
ScalarString(mkChar(cstr)));
- Free(cstr);
+ R_Free(cstr);
SET_STRING_ELT(seqInfoNames, kk, mkChar("version"));
str = seq.GetSeqVersion();
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
SET_VECTOR_ELT(seqInfo, kk++,
ScalarString(mkChar(cstr)));
- Free(cstr);
+ R_Free(cstr);
SET_STRING_ELT(seqInfoNames, kk, mkChar("mapping"));
if(seq.GetProbeMapping() == 0)
@@ -154,19 +154,19 @@ extern "C" {
{
str = seq.GetParameter(j).Tag;
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
SET_STRING_ELT(seqInfoParameterNames, j,
mkChar(cstr));
- Free(cstr);
+ R_Free(cstr);
str = seq.GetParameter(j).Value;
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
SET_STRING_ELT(seqInfoParameters, j,
mkChar(cstr));
- Free(cstr);
+ R_Free(cstr);
}
setAttrib(seqInfoParameters, R_NamesSymbol,
seqInfoParameterNames);
@@ -262,11 +262,11 @@ extern "C" {
R_affx_bpmap_seqinfo_item(seq, i_verboseFlag));
str = seq.FullName();
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
SET_STRING_ELT(returnListNames, i, mkChar(cstr));
- Free(cstr);
+ R_Free(cstr);
}
setAttrib(returnList, R_NamesSymbol, returnListNames);
bpmap.Close();
@@ -469,11 +469,11 @@ extern "C" {
if (i_readProbeSeq) {
str = seqHit.PMProbe;
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
SET_STRING_ELT(probeseq, j, mkChar(cstr));
- Free(cstr);
+ R_Free(cstr);
}
if (i_readStartPos) {
INTEGER(startpos)[j] = seqHit.getStartPosition();
@@ -539,11 +539,11 @@ extern "C" {
SET_VECTOR_ELT(resultList, i, seqObj);
str = seq.FullName();
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
SET_STRING_ELT(resultListNames, i, mkChar(cstr));
- Free(cstr);
+ R_Free(cstr);
UNPROTECT(protectCount);
}
--- r-bioc-affxparser-1.78.0.orig/src/R_affx_cdf_extras.cpp
+++ r-bioc-affxparser-1.78.0/src/R_affx_cdf_extras.cpp
@@ -91,11 +91,11 @@ extern "C" {
/* Record its name */
str = cdf.GetProbeSetName(iset);
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
SET_STRING_ELT(names, ii, mkChar(cstr));
- Free(cstr);
+ R_Free(cstr);
/* Get the number of groups in the unit */
int ngroups = probeset.GetNumGroups();
@@ -116,11 +116,11 @@ extern "C" {
/* Get the name of the group */
str = group.GetName();
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
SET_STRING_ELT(r_group_names, igroup, mkChar(cstr));
- Free(cstr);
+ R_Free(cstr);
/* Get the number of cells (probes) in the group */
int ncells = group.GetNumCells();
@@ -232,7 +232,7 @@ extern "C" {
/* Record its name */
str = cdf.GetProbeSetName(iset);
str_length = str.size();
- name = Calloc(str_length+1, char);
+ name = R_Calloc(str_length+1, char);
strncpy(name, str.c_str(), str_length);
name[str_length] = '\0';
SET_STRING_ELT(names, ii, mkChar(name));
@@ -255,7 +255,7 @@ extern "C" {
/* Get the name of the group */
str = group.GetName();
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
@@ -272,7 +272,7 @@ extern "C" {
} else {
SET_STRING_ELT(r_group_names, igroup, mkChar(cstr));
}
- Free(cstr);
+ R_Free(cstr);
}
/** now set the probe_set in the main probe_set list. **/
@@ -280,7 +280,7 @@ extern "C" {
/** pop the group list and group names of the stack. **/
UNPROTECT(1); /* 'r_group_names' */
- Free(name);
+ R_Free(name);
} /* for (int ii=0 ...) */
/** set the names down here at the end. **/
@@ -408,11 +408,11 @@ extern "C" {
/* Record its name */
str = cdf.GetProbeSetName(iset);
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
SET_STRING_ELT(names, ii, mkChar(cstr));
- Free(cstr);
+ R_Free(cstr);
/* Get the number of groups in the unit */
int ngroups = probeset.GetNumGroups();
@@ -433,11 +433,11 @@ extern "C" {
/* Get the name of the group */
str = group.GetName();
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
SET_STRING_ELT(r_group_names, igroup, mkChar(cstr));
- Free(cstr);
+ R_Free(cstr);
/* Get the number of cells (probes) in the group */
int ncells = group.GetNumCells();
--- r-bioc-affxparser-1.78.0.orig/src/R_affx_cdf_parser.cpp
+++ r-bioc-affxparser-1.78.0/src/R_affx_cdf_parser.cpp
@@ -53,14 +53,14 @@ extern "C" {
for (int iset = 0; iset < nsets; iset++) {
str = cdf.GetProbeSetName(iset);
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
SET_STRING_ELT(names, iset, mkChar(cstr));
if (i_verboseFlag >= R_AFFX_VERBOSE) {
Rprintf("Processing probeset: %s\n", cstr);
}
- Free(cstr);
+ R_Free(cstr);
FusionCDFProbeSetInformation set;
cdf.GetProbeSetInformation(iset, set);
@@ -498,29 +498,29 @@ extern "C" {
SET_STRING_ELT(names, ii, mkChar("refseq"));
str = header.GetReference();
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
SET_VECTOR_ELT(vals, ii++, mkString(cstr));
- Free(cstr);
+ R_Free(cstr);
SET_STRING_ELT(names, ii, mkChar("chiptype"));
str = cdf.GetChipType();
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
SET_VECTOR_ELT(vals, ii++, mkString(cstr));
- Free(cstr);
+ R_Free(cstr);
SET_STRING_ELT(names, ii, mkChar("filename"));
str = cdf.GetFileName();
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
SET_VECTOR_ELT(vals, ii++, mkString(cstr));
- Free(cstr);
+ R_Free(cstr);
/** set the names down here at the end. **/
setAttrib(vals, R_NamesSymbol, names);
@@ -759,7 +759,7 @@ extern "C" {
PROTECT(r_unit = NEW_LIST(numUnitArguments));
str = cdf.GetProbeSetName(unit_idx);
str_length = str.size();
- unitName = Calloc(str_length+1, char);
+ unitName = R_Calloc(str_length+1, char);
strncpy(unitName, str.c_str(), str_length);
unitName[str_length] = '\0';
if (i_verboseFlag >= R_AFFX_VERBOSE) {
@@ -979,12 +979,12 @@ extern "C" {
/** Put the block into the r_blocks_list and unprotect it **/
str = block.GetName();
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
SET_VECTOR_ELT(r_blocks_list, iblock, r_block);
SET_STRING_ELT(r_blocks_list_names, iblock, mkChar(cstr));
- Free(cstr);
+ R_Free(cstr);
UNPROTECT(1);
}
@@ -1001,7 +1001,7 @@ extern "C" {
** and unprotect it. **/
SET_VECTOR_ELT(r_units_list, iunit, r_unit);
SET_STRING_ELT(r_units_list_names, iunit, mkChar(unitName));
- Free(unitName);
+ R_Free(unitName);
UNPROTECT(1);
}
@@ -1148,12 +1148,12 @@ extern "C" {
/* 'name' is a pointer to a const char: */
str = cdf.GetProbeSetName(unitIdx);
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
/** ...and add to list of unit names. **/
SET_STRING_ELT(unitNames, uu, mkChar(cstr));
- Free(cstr);
+ R_Free(cstr);
PROTECT(r_probe_set = NEW_LIST(1));
@@ -1204,11 +1204,11 @@ extern "C" {
SET_VECTOR_ELT(r_group_list, igroup, cell_list);
str = group.GetName();
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
SET_STRING_ELT(r_group_names, igroup, mkChar(cstr));
- Free(cstr);
+ R_Free(cstr);
/* Unprotect in reverse order */
UNPROTECT(2); /* 'indices' and then 'cell_list' */
@@ -1464,12 +1464,12 @@ extern "C" {
/* get the name */
str = cdf.GetProbeSetName(unitIdx);
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
/** ...and add to list of unit names. **/
SET_STRING_ELT(unitNames, uu, mkChar(cstr));
- Free(cstr);
+ R_Free(cstr);
PROTECT(r_probe_set = NEW_LIST(nbrOfUnitElements));
@@ -1622,11 +1622,11 @@ extern "C" {
SET_VECTOR_ELT(r_group_list, igroup, cell_list);
str = group.GetName();
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
SET_STRING_ELT(r_group_names, igroup, mkChar(cstr));
- Free(cstr);
+ R_Free(cstr);
UNPROTECT(1); /* 'cell_list' */
/*
@@ -1732,11 +1732,11 @@ extern "C" {
for (int uu = 0; uu < nbrOfUnits; uu++) {
str = cdf.GetProbeSetName(uu);
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
SET_STRING_ELT(names, uu, mkChar(cstr));
- Free(cstr);
+ R_Free(cstr);
}
} else {
for (int uu = 0; uu < nbrOfUnits; uu++) {
@@ -1744,11 +1744,11 @@ extern "C" {
unitIdx = INTEGER(units)[uu] - 1;
str = cdf.GetProbeSetName(unitIdx);
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
SET_STRING_ELT(names, uu, mkChar(cstr));
- Free(cstr);
+ R_Free(cstr);
}
}
--- r-bioc-affxparser-1.78.0.orig/src/R_affx_cel_parser.cpp
+++ r-bioc-affxparser-1.78.0/src/R_affx_cel_parser.cpp
@@ -34,11 +34,11 @@ extern "C" {
SET_STRING_ELT(names, kk, mkChar("filename"));
str = cel.GetFileName();
str_length = str.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
strncpy(cstr, str.c_str(), str_length);
cstr[str_length] = '\0';
SET_VECTOR_ELT(vals, kk++, mkString(cstr));
- Free(cstr);
+ R_Free(cstr);
SET_STRING_ELT(names, kk, mkChar("version"));
PROTECT(tmp = allocVector(INTSXP, 1));
@@ -67,52 +67,52 @@ extern "C" {
#ifdef SUPPORT_MBCS
str_length = cel.GetAlg().size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
wcstombs(cstr, cel.GetAlg().c_str(), str_length);
cstr[str_length] = '\0';
SET_STRING_ELT(names, kk, mkChar("algorithm"));
SET_VECTOR_ELT(vals, kk++, mkString(cstr));
- Free(cstr);
+ R_Free(cstr);
str_length = cel.GetParams().size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
wcstombs(cstr, cel.GetParams().c_str(), str_length);
cstr[str_length] = '\0';
SET_STRING_ELT(names, kk, mkChar("parameters"));
SET_VECTOR_ELT(vals, kk++, mkString(cstr));
- Free(cstr);
+ R_Free(cstr);
str_length = cel.GetChipType().size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
wcstombs(cstr, cel.GetChipType().c_str(), str_length);
cstr[str_length] = '\0';
SET_STRING_ELT(names, kk, mkChar("chiptype"));
SET_VECTOR_ELT(vals, kk++, mkString(cstr));
- Free(cstr);
+ R_Free(cstr);
str_length = cel.GetHeader().size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
wcstombs(cstr, cel.GetHeader().c_str(), str_length);
cstr[str_length] = '\0';
SET_STRING_ELT(names, kk, mkChar("header"));
SET_VECTOR_ELT(vals, kk++, mkString(cstr));
- Free(cstr);
+ R_Free(cstr);
str_length = cel.GetDatHeader().size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
wcstombs(cstr, cel.GetDatHeader().c_str(), str_length);
cstr[str_length] = '\0';
SET_STRING_ELT(names, kk, mkChar("datheader"));
SET_VECTOR_ELT(vals, kk++, mkString(cstr));
- Free(cstr);
+ R_Free(cstr);
str_length = cel.GetLibraryPackageName().size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
wcstombs(cstr, cel.GetLibraryPackageName().c_str(), str_length);
cstr[str_length] = '\0';
SET_STRING_ELT(names, kk, mkChar("librarypackage"));
SET_VECTOR_ELT(vals, kk++, mkString(cstr));
- Free(cstr);
+ R_Free(cstr);
#else
--- r-bioc-affxparser-1.78.0.orig/src/R_affx_chp_parser.cpp
+++ r-bioc-affxparser-1.78.0/src/R_affx_chp_parser.cpp
@@ -42,7 +42,7 @@ wcs_to_cstr(std::wstring wstr)
int str_length;
char* cstr;
str_length = wstr.size();
- cstr = Calloc(str_length+1, char);
+ cstr = R_Calloc(str_length+1, char);
wcstombs(cstr, wstr.c_str(), str_length);
cstr[str_length] = '\0';
return cstr;
@@ -62,13 +62,13 @@ R_affx_AddCHPMeta(AffymetrixGuidType fil
SET_NAMED_ELT(lst, lstIdx, mkString(fileId.c_str()), nms, "FileId");
SET_NAMED_ELT(lst, lstIdx+1, mkString(cstr = wcs_to_cstr(algName)),
nms, "AlgorithmName");
- Free(cstr);
+ R_Free(cstr);
SET_NAMED_ELT(lst, lstIdx+2, mkString(cstr = wcs_to_cstr(algVersion)),
nms, "AlgorithmVersion");
- Free(cstr);
+ R_Free(cstr);
SET_NAMED_ELT(lst, lstIdx+3, mkString(cstr = wcs_to_cstr(arrayType)),
nms, "ArrayType");
- Free(cstr);
+ R_Free(cstr);
return lstIdx+4;
}
@@ -81,10 +81,10 @@ R_affx_AddCHPTileMeta(AffymetrixGuidType
SET_NAMED_ELT(lst, lstIdx, mkString(fileId.c_str()), nms, "FileId");
SET_NAMED_ELT(lst, lstIdx+1, mkString(cstr = wcs_to_cstr(algName)),
nms, "AlgorithmName");
- Free(cstr);
+ R_Free(cstr);
SET_NAMED_ELT(lst, lstIdx+2, mkString(cstr = wcs_to_cstr(algVersion)),
nms, "AlgorithmVersion");
- Free(cstr);
+ R_Free(cstr);
return lstIdx+3;
}
@@ -100,10 +100,10 @@ R_affx_GetList(FusionTagValuePairTypeLis
for(FusionTagValuePairTypeList::iterator param=params.begin();
param != params.end(); ++pIdx, ++param) {
PROTECT(pVal = mkString(cstr = wcs_to_cstr(param->Value)));
- Free(cstr);
+ R_Free(cstr);
SET_NAMED_ELT(pLst, pIdx, pVal, pNms,
cstr = wcs_to_cstr(param->Tag));
- Free(cstr);
+ R_Free(cstr);
UNPROTECT(1);
}
SET_NAMES(pLst, pNms);
@@ -126,7 +126,7 @@ R_affx_GetList(ParameterNameValueTypeLis
for(ParameterNameValueTypeList::iterator param=params.begin();
param != params.end(); ++pIdx, ++param) {
PROTECT(pName = mkString(cstr = wcs_to_cstr(param->GetName())));
- Free(cstr);
+ R_Free(cstr);
switch(param->GetParameterType())
{
case ParameterNameValueType::Int8Type:
@@ -150,7 +150,7 @@ R_affx_GetList(ParameterNameValueTypeLis
break;
case ParameterNameValueType::TextType:
PROTECT(pVal = mkString(cstr = wcs_to_cstr(param->GetValueText())));
- Free(cstr);
+ R_Free(cstr);
break;
case ParameterNameValueType::AsciiType:
PROTECT(pVal = mkString(param->GetValueAscii().c_str()));
@@ -328,7 +328,7 @@ R_affx_GetCHPGenotypingResults(FusionCHP
//FIXME: I did not think AlgName could be "", it is, so we are stuck
//with that
PROTECT(alg = mkString(cstr = wcs_to_cstr(chp->GetHeader().GetAlgName())));
- Free(cstr);
+ R_Free(cstr);
nprotect++;
if(chp->GetHeader().GetAlgName() == L"WholeGenome") {
@@ -650,13 +650,13 @@ SEXP R_affx_ReadTilingDataSeqHeader(Tili
PROTECT(header = NEW_LIST(4));
PROTECT(hnames = NEW_CHARACTER(4));
SET_NAMED_ELT(header, 0, mkString(cstr = wcs_to_cstr(seq.name)), hnames, "name");
- Free(cstr);
+ R_Free(cstr);
SET_NAMED_ELT(header, 1, mkString(cstr = wcs_to_cstr(seq.groupName)), hnames,
"groupName");
- Free(cstr);
+ R_Free(cstr);
SET_NAMED_ELT(header, 2, mkString(cstr = wcs_to_cstr(seq.version)), hnames,
"version");
- Free(cstr);
+ R_Free(cstr);
SET_NAMED_ELT(header, 3,
R_affx_GetList(seq.parameters),
hnames, "parameters");
More information about the R-pkg-team
mailing list