• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

igor-krechetov / hsmcpp / 4957453907

pending completion
4957453907

push

github

igor-krechetov
[0.37.0][r] fix early delete issue

74 of 74 new or added lines in 5 files covered. (100.0%)

2291 of 2482 relevant lines covered (92.3%)

1739.84 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

47.22
/src/os/common/UniqueLock.cpp
1
// Copyright (C) 2022 Igor Krechetov
2
// Distributed under MIT license. See file LICENSE for details
3
#include "hsmcpp/os/common/UniqueLock.hpp"
4

5
#include "hsmcpp/os/Mutex.hpp"
6

7
namespace hsmcpp {
8

9
UniqueLock::UniqueLock(Mutex& sync)
7,631✔
10
// NOTE: false-positive. thinks that ':' is arithmetic operation
11
// cppcheck-suppress misra-c2012-10.4
12
    : mSync(&sync) {
7,631✔
13
    lock();
7,631✔
14
}
7,631✔
15

16
UniqueLock::~UniqueLock() {
7,631✔
17
    unlock();
7,631✔
18
}
7,631✔
19

20
UniqueLock::UniqueLock(UniqueLock&& src) noexcept
×
21
    : mSync(src.mSync)
×
22
    , mOwnsLock(src.mOwnsLock) {
×
23
    src.mSync = nullptr;
×
24
    src.mOwnsLock = false;
×
25
}
×
26

27
UniqueLock& UniqueLock::operator=(UniqueLock&& src) noexcept {
×
28
    if (mOwnsLock) {
×
29
        unlock();
×
30
    }
31

32
    mSync = src.mSync;
×
33
    mOwnsLock = src.mOwnsLock;
×
34

35
    src.mSync = nullptr;
×
36
    src.mOwnsLock = false;
×
37

38
    return *this;
×
39
}
40

41
void UniqueLock::lock() {
7,631✔
42
    if ((nullptr != mSync) && (false == mOwnsLock)) {
7,631✔
43
        mSync->lock();
7,631✔
44
        mOwnsLock = true;
7,631✔
45
    }
46
}
7,631✔
47

48
void UniqueLock::unlock() {
11,430✔
49
    if ((nullptr != mSync) && (true == mOwnsLock)) {
11,430✔
50
        mSync->unlock();
7,627✔
51
        mOwnsLock = false;
7,631✔
52
    }
53
}
11,434✔
54

55
Mutex* UniqueLock::release() noexcept {
×
56
    Mutex* res = mSync;
×
57

58
    mSync = nullptr;
×
59
    mOwnsLock = false;
×
60

61
    return res;
×
62
}
63

64
}  // namespace hsmcpp
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc