Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix GCC 13.2.1 compilation with -Werror #197

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion MMVII/include/MMVII_Ptxd.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ template <class Type,const int Dim> class cPtxd
}

/// Some function requires default constructor (serialization ?)
cPtxd() {}
cPtxd() : mCoords{} {}

/* I would prefer not inline but : cannot make work explicit instance of a
a specific method, and explicit of the whole class create problem
Expand Down
1 change: 1 addition & 0 deletions MMVII/include/SymbDer/SymbDer_Common.h
Original file line number Diff line number Diff line change
Expand Up @@ -433,6 +433,7 @@ template <class Type> class cName2Calc
{
if (SVP) return nullptr;
UserSError("Cannot extract allocator. Check that this application was recompiled after code generation",aName);
return nullptr;
}
return anIter->second;
}
Expand Down
3 changes: 3 additions & 0 deletions include/ext_stl/fifo.h
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,9 @@ template <class Type> class ElFifo

void incr_capa()
{
if (_capa == 0)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be

        if (_capa < 1)
            _capa = 1;

in constructor?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It can be, I did this in case _capa=-1 means uninitialized where _capa = 0 is an error

_capa = 1;

Type * NewTab = new Type [2*_capa];
for (INT kk=0; kk<_nb ; kk++)
NewTab[kk] = _tab[(kk+_begin)%_capa];
Expand Down
2 changes: 1 addition & 1 deletion src/TpMMPD/DeformAnalyse.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ int DeformAnalyse_main (int argc, char ** argv)

// 3. get the vector PerResidu
ifstream aPR((aDir + aOut1).c_str());
char *aPerR;
char *aPerR{nullptr};
if(aPR)
{
std::string aLine;
Expand Down
2 changes: 1 addition & 1 deletion src/TpMMPD/TiePByMesh/TaskCorrel/cAppliTaskCorrel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ void cAppliTaskCorrel::ReadXMLMesurePts(string aGCPMesureXML, vector<cImgForTiep
std::list<cOneMesureAF1I> & aMes = iT1->OneMesureAF1I();
string aNameIm = iT1->NameIm();
cout<<endl<<" + Img : "<<aNameIm<<endl;
cImgForTiepTri* aImg;
cImgForTiepTri* aImg{};
for (uint akIm=0; akIm<mVImgs.size(); akIm++)
{
if (aNameIm == mVImgs[akIm]->Name())
Expand Down
3 changes: 2 additions & 1 deletion src/photogram/DataBase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,8 @@ std::string cInterfChantierNameManipulateur::DBNameTransfo
std::string aName = aNameInit;
std::string aSep = aDBNT.Separateur().Val();
int aMode = MMUserEnv().VersionNameCam().ValWithDef(1);
const cMetaDataPhoto & aMDP = cMetaDataPhoto::CreateExiv2(mDir+aName);
auto path = mDir+aName;
const cMetaDataPhoto & aMDP = cMetaDataPhoto::CreateExiv2(path);
double aFoc = aMDP.FocMm(true);

std::string aCompl = "";
Expand Down
51 changes: 26 additions & 25 deletions src/uti_image/CPP_Vignette.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -479,7 +479,8 @@ vector<GrpVodka> Make_Grp(std::string aDir, std::string InCal, std::vector<std::
//Creating a new list of images for each combination of Diaph & Foc, and recording their ExpTime and ISO for future normalisation
for (int j=0;j<(int)aSetIm.size();j++){
std::string aFullName=aSetIm[j];
const cMetaDataPhoto & infoIm = cMetaDataPhoto::CreateExiv2(aDir + aFullName);
auto path = aDir + aFullName;
const cMetaDataPhoto & infoIm = cMetaDataPhoto::CreateExiv2(path);
cout<<"Getting Diaph and Focal from "<<aFullName<<endl;

if (aVectGrpVodka.size()==0){
Expand Down Expand Up @@ -574,7 +575,7 @@ int Vignette_main(int argc,char ** argv)
//Avec Points homol
PtsHom aPtsHomol=ReadPtsHom(aDir, aVectGrpVodka[i], Extension);

// cas o pour un mme groupe il n'y a pas de points homologues (les images ne se recouvrent pas par exemple)
// cas o? pour un m?me groupe il n'y a pas de points homologues (les images ne se recouvrent pas par exemple)
if(aPtsHomol.size() == 0)
{
std::cout<< endl << "WARNING : A vignette can't be computed with 0 tie points from the group with Foc = "<< aGrp.foc << " and Diaph = " << aGrp.diaph << endl << endl;
Expand Down Expand Up @@ -612,7 +613,7 @@ int Vignette_main(int argc,char ** argv)

if (DoCor && aVectGrpVodka[i].isComputed==1)
{
//Correction des images avec les params calculs
//Correction des images avec les params calcul?s
cout<<"Correcting the images"<<endl;
Vignette_correct(aDir, aVectGrpVodka[i], aDirOut, CalibFolder);
}
Expand All @@ -624,34 +625,34 @@ int Vignette_main(int argc,char ** argv)

/*Footer-MicMac-eLiSe-25/06/2007

Ce logiciel est un programme informatique servant la mise en
Ce logiciel est un programme informatique servant ? la mise en
correspondances d'images pour la reconstruction du relief.

Ce logiciel est rgi par la licence CeCILL-B soumise au droit franais et
Ce logiciel est r?gi par la licence CeCILL-B soumise au droit fran?ais et
respectant les principes de diffusion des logiciels libres. Vous pouvez
utiliser, modifier et/ou redistribuer ce programme sous les conditions
de la licence CeCILL-B telle que diffuse par le CEA, le CNRS et l'INRIA
de la licence CeCILL-B telle que diffus?e par le CEA, le CNRS et l'INRIA
sur le site "http://www.cecill.info".

En contrepartie de l'accessibilit au code source et des droits de copie,
de modification et de redistribution accords par cette licence, il n'est
offert aux utilisateurs qu'une garantie limite. Pour les mmes raisons,
seule une responsabilit restreinte pse sur l'auteur du programme, le
titulaire des droits patrimoniaux et les concdants successifs.

A cet gard l'attention de l'utilisateur est attire sur les risques
associs au chargement, l'utilisation, la modification et/ou au
dveloppement et la reproduction du logiciel par l'utilisateur tant
donn sa spcificit de logiciel libre, qui peut le rendre complexe
manipuler et qui le rserve donc des dveloppeurs et des professionnels
avertis possdant des connaissances informatiques approfondies. Les
utilisateurs sont donc invit�s � charger et tester l'adquation du
logiciel leurs besoins dans des conditions permettant d'assurer la
scurit de leurs systmes et ou de leurs donnes et, plus g�n�ralement,
l'utiliser et l'exploiter dans les mmes conditions de scurit.

Le fait que vous puissiez accder cet en-tte signifie que vous avez
pris connaissance de la licence CeCILL-B, et que vous en avez accept les
En contrepartie de l'accessibilit? au code source et des droits de copie,
de modification et de redistribution accord?s par cette licence, il n'est
offert aux utilisateurs qu'une garantie limit?e. Pour les m?mes raisons,
seule une responsabilit? restreinte p?se sur l'auteur du programme, le
titulaire des droits patrimoniaux et les conc?dants successifs.

A cet ?gard l'attention de l'utilisateur est attir?e sur les risques
associ?s au chargement, ? l'utilisation, ? la modification et/ou au
d?veloppement et ? la reproduction du logiciel par l'utilisateur ?tant
donn? sa sp?cificit? de logiciel libre, qui peut le rendre complexe ?
manipuler et qui le r?serve donc ? des d?veloppeurs et des professionnels
avertis poss?dant des connaissances informatiques approfondies. Les
utilisateurs sont donc invit?s ? charger et tester l'ad?quation du
logiciel ? leurs besoins dans des conditions permettant d'assurer la
s?curit? de leurs syst?mes et ou de leurs donn?es et, plus g?n?ralement,
? l'utiliser et l'exploiter dans les m?mes conditions de s?curit?.

Le fait que vous puissiez acc?der ? cet en-t?te signifie que vous avez
pris connaissance de la licence CeCILL-B, et que vous en avez accept? les
termes.
Footer-MicMac-eLiSe-25/06/2007*/

125 changes: 69 additions & 56 deletions src/uti_phgrm/GraphCut/MaxFlow/graph.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,64 +58,77 @@ template <typename captype, typename tcaptype, typename flowtype>
flow = 0;
}

template <typename captype, typename tcaptype, typename flowtype>
void Graph<captype,tcaptype,flowtype>::reallocate_nodes(int num)
{
int node_num_max = (int)(node_max - nodes);
node* nodes_old = nodes;

node_num_max += node_num_max / 2;
if (node_num_max < node_num + num) node_num_max = node_num + num;
nodes = (node*) realloc(nodes_old, node_num_max*sizeof(node));
if (!nodes) { if (error_function) (*error_function)("Not enough memory!"); exit(1); }

node_last = nodes + node_num;
node_max = nodes + node_num_max;

if (nodes != nodes_old)
{
node* i;
arc* a;
for (i=nodes; i<node_last; i++)
{
if (i->next) i->next = (node*) ((char*)i->next + (((char*) nodes) - ((char*) nodes_old)));
}
for (a=arcs; a<arc_last; a++)
{
a->head = (node*) ((char*)a->head + (((char*) nodes) - ((char*) nodes_old)));
}
}
template <typename captype, typename tcaptype, typename flowtype>
void Graph<captype, tcaptype, flowtype>::reallocate_nodes(int num) {
int node_num_max = (int)(node_max - nodes);
size_t nodes_old = (size_t)nodes;

node_num_max += node_num_max / 2;
if (node_num_max < node_num + num) node_num_max = node_num + num;

nodes = (node*)realloc(nodes, node_num_max * sizeof(node));

if (!nodes) {
if (error_function) (*error_function)("Not enough memory!");
exit(1);
}

node_last = nodes + node_num;
node_max = nodes + node_num_max;

if ((size_t)nodes != nodes_old) {
node* i;
arc* a;
for (i = nodes; i < node_last; i++) {
if (i->next)
i->next =
(node*)((size_t)i->next +
(((size_t)nodes) - ((size_t)nodes_old)));
}
for (a = arcs; a < arc_last; a++) {
a->head = (node*)((size_t)a->head +
(((size_t)nodes) - ((size_t)nodes_old)));
}
}
}

template <typename captype, typename tcaptype, typename flowtype>
void Graph<captype,tcaptype,flowtype>::reallocate_arcs()
{
int arc_num_max = (int)(arc_max - arcs);
int arc_num = (int)(arc_last - arcs);
arc* arcs_old = arcs;

arc_num_max += arc_num_max / 2; if (arc_num_max & 1) arc_num_max ++;
arcs = (arc*) realloc(arcs_old, arc_num_max*sizeof(arc));
if (!arcs) { if (error_function) (*error_function)("Not enough memory!"); exit(1); }

arc_last = arcs + arc_num;
arc_max = arcs + arc_num_max;

if (arcs != arcs_old)
{
node* i;
arc* a;
for (i=nodes; i<node_last; i++)
{
if (i->first) i->first = (arc*) ((char*)i->first + (((char*) arcs) - ((char*) arcs_old)));
if (i->parent && i->parent != ORPHAN && i->parent != TERMINAL) i->parent = (arc*) ((char*)i->parent + (((char*) arcs) - ((char*) arcs_old)));
}
for (a=arcs; a<arc_last; a++)
{
if (a->next) a->next = (arc*) ((char*)a->next + (((char*) arcs) - ((char*) arcs_old)));
a->sister = (arc*) ((char*)a->sister + (((char*) arcs) - ((char*) arcs_old)));
}
}
template <typename captype, typename tcaptype, typename flowtype>
void Graph<captype, tcaptype, flowtype>::reallocate_arcs() {
int arc_num_max = (int)(arc_max - arcs);
int arc_num = (int)(arc_last - arcs);
size_t arcs_old = (size_t)arcs;

arc_num_max += arc_num_max / 2;
if (arc_num_max & 1) arc_num_max++;
arcs = (arc*)realloc(arcs, arc_num_max * sizeof(arc));
if (!arcs) {
if (error_function) (*error_function)("Not enough memory!");
exit(1);
}

arc_last = arcs + arc_num;
arc_max = arcs + arc_num_max;

if ((size_t)arcs != arcs_old) {
node* i;
arc* a;
for (i = nodes; i < node_last; i++) {
if (i->first)
i->first = (arc*)((size_t)i->first +
(((size_t)arcs) - ((size_t)arcs_old)));
if (i->parent && i->parent != ORPHAN &&
i->parent != TERMINAL)
i->parent = (arc*)((size_t)i->parent +
(((size_t)arcs) - ((size_t)arcs_old)));
}
for (a = arcs; a < arc_last; a++) {
if (a->next)
a->next = (arc*)((size_t)a->next +
(((size_t)arcs) - ((size_t)arcs_old)));
a->sister = (arc*)((size_t)a->sister +
(((size_t)arcs) - ((size_t)arcs_old)));
}
}
}

#include "instances.inc"
4 changes: 2 additions & 2 deletions src/uti_phgrm/GraphCut/QPBO-v1.4/QPBO.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ template <typename T>
{
code_assert(node_num_max_new > node_shift/((int)sizeof(Node)));
Node* nodes_old[2] = { nodes[0], nodes[1] };

auto size = ((char*)nodes_old[1] - (char*)nodes_old[0]);
int node_num_max = node_num_max_new;
nodes[0] = (Node*) realloc(nodes_old[0], 2*node_num_max*sizeof(Node));
if (!nodes[0]) { if (error_function) (*error_function)("Not enough memory!"); exit(1); }
Expand All @@ -202,7 +202,7 @@ template <typename T>
node_max[1] = nodes[1] + node_num_max;
if (stage)
{
memmove(nodes[1], (char*)nodes[0] + ((char*)nodes_old[1] - (char*)nodes_old[0]), node_num*sizeof(Node));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not declaring size here?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The value needs to be computed before the realloc to avoid use after free

memmove(nodes[1], (char*)nodes[0] + size, node_num*sizeof(Node));
}

Arc* a;
Expand Down
2 changes: 1 addition & 1 deletion src/util/regex.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ cElRegex::cElRegex(const std::string & aNameExprIn,int aNbMatchMax,int aCFlag,bo

if (! IsOk())
return;
regmatch_t aMatch;
regmatch_t aMatch{};
mVMatch.reserve(aNbMatchMax);
for (int aK=0; aK<aNbMatchMax ; aK++)
mVMatch.push_back(aMatch);
Expand Down