Cleanup: provide printGPSCoords in C and C++ versions

printGPSCoords() returned a newly allocated C-style string. Most
callers simply made a QString out of it and freed the C-style string.
This is paradoxical, as printGPSCoords internally works with QStrings
and converts them to C-style on return.

Therefore, let printGPSCoords() return a QString and create a
printGPSCoordsC() wrapper for the two C-callers.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2019-03-25 09:05:47 +01:00 committed by Robert C. Helling
parent 04593e8ec4
commit 40a3e562b0
11 changed files with 24 additions and 39 deletions

View file

@ -72,7 +72,7 @@ QString distance_string(int distanceInMeters)
return str;
}
extern "C" char *printGPSCoords(const location_t *location)
QString printGPSCoords(const location_t *location)
{
int lat = location->lat.udeg;
int lon = location->lon.udeg;
@ -82,7 +82,7 @@ extern "C" char *printGPSCoords(const location_t *location)
QString lath, lonh, result;
if (!has_location(location))
return strdup("");
return QString();
if (prefs.coordinates_traditional) {
lath = lat >= 0 ? gettextFromC::tr("N") : gettextFromC::tr("S");
@ -101,7 +101,12 @@ extern "C" char *printGPSCoords(const location_t *location)
} else {
result.sprintf("%f %f", (double) lat / 1000000.0, (double) lon / 1000000.0);
}
return copy_qstring(result);
return result;
}
extern "C" char *printGPSCoordsC(const location_t *location)
{
return copy_qstring(printGPSCoords(location));
}
/**