diff --git a/.github/workflows/update-docker.yml b/.github/workflows/update-docker.yml index 578e86edc..3788f1975 100644 --- a/.github/workflows/update-docker.yml +++ b/.github/workflows/update-docker.yml @@ -1,10 +1,11 @@ name: Aktualizr CI docker images update on: push: - branches: [ master ] + branches: [master] jobs: update-bionic: name: Update Ubuntu Bionic Image + if: github.repository == 'uptane/aktualizr' runs-on: ubuntu-latest env: DOCKER_TAG: docker.pkg.github.com/uptane/aktualizr/aktualizr-ci:bionic-master @@ -21,6 +22,7 @@ jobs: update-ubuntu-focal: name: Update Ubuntu Focal Image + if: github.repository == 'uptane/aktualizr' runs-on: ubuntu-latest env: DOCKER_TAG: docker.pkg.github.com/uptane/aktualizr/aktualizr-ci:ubuntu-focal-master diff --git a/scripts/get_version.sh b/scripts/get_version.sh index 713b4ef55..53635002b 100755 --- a/scripts/get_version.sh +++ b/scripts/get_version.sh @@ -5,4 +5,8 @@ set -euo pipefail GIT=${1:-git} REPO=${2:-.} -"$GIT" -C "$REPO" describe --long | tr -d '\n' +if ! VERSION=$("$GIT" -C "$REPO" describe --long 2>/dev/null | tr -d '\n'); then + VERSION=$("$GIT" -C "$REPO" rev-parse --short HEAD | tr -d '\n') +fi + +printf "%s" "$VERSION" diff --git a/src/libaktualizr-posix/asn1/asn1_message.h b/src/libaktualizr-posix/asn1/asn1_message.h index c0565763c..3d3aa5edd 100644 --- a/src/libaktualizr-posix/asn1/asn1_message.h +++ b/src/libaktualizr-posix/asn1/asn1_message.h @@ -1,5 +1,8 @@ #ifndef ASN1_MESSAGE_H_ #define ASN1_MESSAGE_H_ + +#include + #include #include "AKIpUptaneMes.h" @@ -55,9 +58,12 @@ class Asn1Message { */ static Asn1Message::Ptr FromRaw(AKIpUptaneMes_t** msg) { return new Asn1Message(msg); } - friend void intrusive_ptr_add_ref(Asn1Message* m) { m->ref_count_++; } + friend void intrusive_ptr_add_ref(Asn1Message* m) { m->ref_count_.fetch_add(1, std::memory_order_relaxed); } + friend void intrusive_ptr_release(Asn1Message* m) { - if (--m->ref_count_ == 0) { + const int prev_count = m->ref_count_.fetch_sub(1, std::memory_order_release); + if (prev_count == 1) { + std::atomic_thread_fence(std::memory_order_acquire); delete m; } } @@ -144,8 +150,7 @@ class Asn1Message { AKIpUptaneMes_t msg_{}; // Note that this must be zero-initialized private: - int ref_count_{0}; - + std::atomic ref_count_{0}; Asn1Message() = default; explicit Asn1Message(AKIpUptaneMes_t** msg) {