This includes using the C++ version of membuffer. There appears
to not have been a leak, because the buffer is freed in
flush_buffer(), but usage was somewhat inconsistent and hard to
follow.
Also, convert some string handling to std::string to avoid free()
madness.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
get_changes_made(), subsurface_user_agent() and normalize_cloud_name()
are only called from C++.
Avoids having to manually free the returned value and is therefore
more robust against leaks.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
The code is now much easier to check for memory leaks,
since there are no explicit free()s. Yes, memory is not
released immediately, but that should be of no concern.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This changes default behavior when creating a sample struct
in C++ code: it is now initialized to default values. If this
ever turns out to be a performance problem, we can either add
additional constructors or use special functions that do
not initialize memory, such as make_unique_for_overwrite.
This removes non-standard (respectively >C++20) constructs,
namely designated initializers.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Avoid error-prone malloc/free pairs. This uses somewhat
obscure constructs to stay as close as possible to the
original C code. Notably, it uses mostly unique_ptr<T[]>
which doesn't store the length of the array, because the
length is supposed to be known.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Long term project: convert core to C++ so that we can
use higer-level constructs, notably std::vector<>.
This does not change any code - only fixes compile issues.
Mostly casting of (void *) to the proper type. Also designated
initialization of the sample struct had to be rearranged.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
In the core, we usually want C strings, not QStrings. Therefore,
make translated C strings directly available from C++.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
The function clear_*_table frees all elements of the table.
However, persumably as a performance feature, it kept the
memory of the table itselt (i.e. it only reset the number of
elements but kept the capacity).
That is fine if the table is reused later. However, this
function was also used when freeing the table and this
would leak the table memory.
This commit frees the table memory. An alternative would
be to have separate clear_*_table and free_*_table functions.
But let's wait with that until we port the table code to C++.
Then this will be "automatically" fixed.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Firstly, why calculate something when the next statement is a return
anyway.
Secondly, the calculation subtracts two completely unrelated pointers.
This must be some code reshuffling artifact.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Determine grade based on whether we actually managed to check out the
buildnumber.
This assumes that the tree is clean for building a stable snap (one that
can be published to candidate and stable channels).
Signed-off-by: Michał Sawicz <michal@sawicz.net>
Add support for the new dive computer models that have been added in the
latest version of libdivecomputer.
Signed-off-by: Michael Keller <mikeller@042.ch>
Adding temp support for divelogs.de import/export.
Adding export of divecomputer model to divelogs.de export
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
While the startup flow should make it obvious when a user is not
correctly logged into the cloud, we still do see fairly frequent
situations where a user has an incorrect password on a mobile device and
is confused about why their data isn't syncing with their PC. Now this
is clearly shown in the main menu.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Currently, the "hide event" status is lost when switching dives.
Save it in the event struct instead to make it persistent.
In the future we might save this information to the log file.
Then this should be integrated in the undo-system.
This commit also makes the "unhide events" menu entry more
fine grained: It now differentiates between individual
events and event types.
Note this adds an additional field to the event structure.
There is a "deleted" field that is used internally for
book-keeping, but probably should be removed. Not touching
this at the moment as long as this is C-only code. When/if
switching to C++ we can make the event linked list a table,
which will make this much simpler.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Currently the event type code uses libdivecomputer's flags
to differentiate between events. Make this explicit and extract
the event severity.
The reason is that later we want to be more explicit about showing/
hiding events and thereto we must format the name of events.
Moreover, this encapsulates the complexities of extracting
the severity in the event code (that used to be in the profile
code).
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Instead of passing name / flag pairs to event_type functions,
pass a pointer to the event. This hides implementation details.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This structure is used to hide events of a certain type.
The type was inferred from its name, but now includes flags.
So event_type is more appropriate.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>