Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // -std=c++11 -Wall -Wextra
- #include <iostream>
- #include <functional>
- #include <assert.h>
- #include <ostree.h>
- using namespace std;
- struct Defer
- {
- function<void()> _f;
- Defer(function<void()> f)
- :_f(std::move(f))
- {
- }
- ~Defer()
- {
- _f();
- }
- };
- int main(int argc, char **argv)
- {
- GFile *path(g_file_new_for_path(argv[1]));
- Defer d0([&path] {
- g_object_unref(path);
- });
- OstreeRepo *repo(ostree_repo_new(path));
- assert(repo);
- Defer d([&repo] {
- g_object_unref(repo);
- });
- {
- GError *error(nullptr);
- Defer d([&error] {
- if (error) {
- g_error_free(error);
- }
- });
- if (!ostree_repo_open(repo,nullptr,&error)) {
- cerr << "Error opening repository: " << error->message << endl;
- return 1;
- }
- // FIXME: when there is no errors on open(), there is a leak of 72 bytes on it
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement