diff options
| -rw-r--r-- | meta/recipes-extended/pbzip2/pbzip2/0001-Do-not-rely-on-std-char_traits-template-from-stdlib.patch | 116 | ||||
| -rw-r--r-- | meta/recipes-extended/pbzip2/pbzip2_1.1.13.bb | 1 |
2 files changed, 117 insertions, 0 deletions
diff --git a/meta/recipes-extended/pbzip2/pbzip2/0001-Do-not-rely-on-std-char_traits-template-from-stdlib.patch b/meta/recipes-extended/pbzip2/pbzip2/0001-Do-not-rely-on-std-char_traits-template-from-stdlib.patch new file mode 100644 index 0000000000..21c9145a1a --- /dev/null +++ b/meta/recipes-extended/pbzip2/pbzip2/0001-Do-not-rely-on-std-char_traits-template-from-stdlib.patch | |||
| @@ -0,0 +1,116 @@ | |||
| 1 | From c9f1af117557ad5d75df9e37bf3fbb1185f67de2 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Khem Raj <raj.khem@gmail.com> | ||
| 3 | Date: Fri, 18 Jul 2025 10:26:06 -0700 | ||
| 4 | Subject: [PATCH] Do not rely on std::char_traits template from stdlib | ||
| 5 | |||
| 6 | standard never required the base template for | ||
| 7 | char_traits to any type but it was given for | ||
| 8 | convenience purposes. Nowadays, at least in LLVM's | ||
| 9 | libcxx version 19+ it got removed [1]. | ||
| 10 | |||
| 11 | GCC might follow the same path at some point so | ||
| 12 | porting it away from char_traits might be a good | ||
| 13 | idea. | ||
| 14 | |||
| 15 | The fix is applied to FreeBSD [2] [3] | ||
| 16 | |||
| 17 | Reported issue [4] | ||
| 18 | |||
| 19 | [1] https://reviews.llvm.org/D138307 | ||
| 20 | [2] https://cgit.freebsd.org/ports/commit/archivers/pbzip2/files/patch-BZ2StreamScanner.cpp?id=29c80f114ea6cc60be39502339572af8c35ac440 | ||
| 21 | [3] https://cgit.freebsd.org/ports/commit/archivers/pbzip2/files/patch-BZ2StreamScanner.cpp?id=89f872ec2ccf488f24cd9daca2e0d1f80e7ee429 | ||
| 22 | [4] https://github.com/ruanhuabin/pbzip2/issues/1 | ||
| 23 | |||
| 24 | Upstream-Status: Inactive-Upstream [lastcommit: 2015-12-17] | ||
| 25 | |||
| 26 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
| 27 | --- | ||
| 28 | BZ2StreamScanner.cpp | 21 +++++++++++---------- | ||
| 29 | BZ2StreamScanner.h | 6 +++--- | ||
| 30 | 2 files changed, 14 insertions(+), 13 deletions(-) | ||
| 31 | |||
| 32 | diff --git a/BZ2StreamScanner.cpp b/BZ2StreamScanner.cpp | ||
| 33 | index a134712..f32a321 100644 | ||
| 34 | --- a/BZ2StreamScanner.cpp | ||
| 35 | +++ b/BZ2StreamScanner.cpp | ||
| 36 | @@ -42,15 +42,15 @@ int BZ2StreamScanner::init( int hInFile, size_t inBuffCapacity ) | ||
| 37 | { | ||
| 38 | dispose(); | ||
| 39 | |||
| 40 | - CharType bz2header[] = "BZh91AY&SY"; | ||
| 41 | - // zero-terminated string | ||
| 42 | + CharType bz2header[] = | ||
| 43 | + { 'B', 'Z', 'h', '9', '1', 'A', 'Y', '&', 'S', 'Y' }; | ||
| 44 | CharType bz2ZeroHeader[] = | ||
| 45 | - { 'B', 'Z', 'h', '9', 0x17, 0x72, 0x45, 0x38, 0x50, 0x90, 0 }; | ||
| 46 | + { 'B', 'Z', 'h', '9', 0x17, 0x72, 0x45, 0x38, 0x50, 0x90 }; | ||
| 47 | |||
| 48 | _hInFile = hInFile; | ||
| 49 | _eof = false; | ||
| 50 | - _bz2Header = bz2header; | ||
| 51 | - _bz2HeaderZero = bz2ZeroHeader; | ||
| 52 | + _bz2Header.assign(begin(bz2header), end(bz2header)); | ||
| 53 | + _bz2HeaderZero.assign(begin(bz2ZeroHeader), end(bz2ZeroHeader)); | ||
| 54 | _bz2HeaderFound = false; | ||
| 55 | _inBuffCapacity = 0; | ||
| 56 | _errState = 0; | ||
| 57 | @@ -361,7 +361,7 @@ BZ2StreamScanner::CharType * BZ2StreamScanner::locateHeaderPrefixInBuff() | ||
| 58 | _errState |= ERR_INVALID_FILE_FORMAT; | ||
| 59 | _inBuffSearchPtr = getInBuffEnd(); | ||
| 60 | } | ||
| 61 | - else if ( _bz2Header.compare( 0, prefixLen, getInBuffSearchPtr(), prefixLen ) == 0 ) | ||
| 62 | + else if ( equal( _bz2Header.begin(), _bz2Header.begin() + prefixLen, getInBuffSearchPtr() ) ) | ||
| 63 | { | ||
| 64 | // header prefix found | ||
| 65 | } | ||
| 66 | @@ -416,7 +416,7 @@ BZ2StreamScanner::CharType * BZ2StreamScanner::searchNextHeaderInBuff() | ||
| 67 | while ( !failed() && ( getUnsearchedCount() >= getHeaderSize() ) ) | ||
| 68 | { | ||
| 69 | // _inBuffSearchPtr += prefixLen; | ||
| 70 | - basic_string<CharType> * pHdr = NULL; | ||
| 71 | + vector<CharType> * pHdr = NULL; | ||
| 72 | |||
| 73 | if ( getInBuffSearchPtr()[hsp] == _bz2Header[hsp] ) | ||
| 74 | { | ||
| 75 | @@ -441,13 +441,14 @@ BZ2StreamScanner::CharType * BZ2StreamScanner::searchNextHeaderInBuff() | ||
| 76 | (*pHdr)[prefixLen] = bwtSizeChar; | ||
| 77 | |||
| 78 | // compare the remaining part of magic header | ||
| 79 | - int cmpres = pHdr->compare( hsp, pHdr->size() - hsp, | ||
| 80 | - getInBuffSearchPtr() + hsp, pHdr->size() - hsp ); | ||
| 81 | + bool cmpres = equal( pHdr->begin() + hsp, pHdr->end(), | ||
| 82 | + getInBuffSearchPtr() + hsp ); | ||
| 83 | + | ||
| 84 | |||
| 85 | #ifdef PBZIP_DEBUG | ||
| 86 | fprintf( stderr, " searchNextHeaderInBuff:cmpres=%d\n", cmpres ); | ||
| 87 | #endif | ||
| 88 | - if ( cmpres == 0 ) | ||
| 89 | + if ( cmpres ) | ||
| 90 | { | ||
| 91 | _searchStatus = true; | ||
| 92 | #ifdef PBZIP_DEBUG | ||
| 93 | diff --git a/BZ2StreamScanner.h b/BZ2StreamScanner.h | ||
| 94 | index d3729fe..32697cb 100644 | ||
| 95 | --- a/BZ2StreamScanner.h | ||
| 96 | +++ b/BZ2StreamScanner.h | ||
| 97 | @@ -44,7 +44,7 @@ public: | ||
| 98 | |||
| 99 | size_t getInBuffSize() const { return ( _inBuffEnd - _inBuff ); } | ||
| 100 | size_t getInBuffCapacity() const { return _inBuffCapacity; } | ||
| 101 | - const basic_string<CharType> & getHeader() const { return _bz2Header; } | ||
| 102 | + const vector<CharType> & getHeader() const { return _bz2Header; } | ||
| 103 | size_t getHeaderSize() const { return _bz2Header.size(); } | ||
| 104 | int getErrState() const { return _errState; } | ||
| 105 | bool failed() { return ( _errState != 0 ); } | ||
| 106 | @@ -125,8 +125,8 @@ private: | ||
| 107 | int _hInFile; // input file descriptor | ||
| 108 | bool _eof; | ||
| 109 | |||
| 110 | - basic_string<CharType> _bz2Header; | ||
| 111 | - basic_string<CharType> _bz2HeaderZero; | ||
| 112 | + vector<CharType> _bz2Header; | ||
| 113 | + vector<CharType> _bz2HeaderZero; | ||
| 114 | bool _bz2HeaderFound; | ||
| 115 | bool _searchStatus; | ||
| 116 | |||
diff --git a/meta/recipes-extended/pbzip2/pbzip2_1.1.13.bb b/meta/recipes-extended/pbzip2/pbzip2_1.1.13.bb index f95400998c..063f600ba9 100644 --- a/meta/recipes-extended/pbzip2/pbzip2_1.1.13.bb +++ b/meta/recipes-extended/pbzip2/pbzip2_1.1.13.bb | |||
| @@ -13,6 +13,7 @@ DEPENDS:append:class-native = " bzip2-replacement-native" | |||
| 13 | 13 | ||
| 14 | SRC_URI = "https://launchpad.net/${BPN}/1.1/${PV}/+download/${BP}.tar.gz \ | 14 | SRC_URI = "https://launchpad.net/${BPN}/1.1/${PV}/+download/${BP}.tar.gz \ |
| 15 | file://0001-pbzip2-Fix-invalid-suffix-on-literal-C-11-warning.patch \ | 15 | file://0001-pbzip2-Fix-invalid-suffix-on-literal-C-11-warning.patch \ |
| 16 | file://0001-Do-not-rely-on-std-char_traits-template-from-stdlib.patch \ | ||
| 16 | " | 17 | " |
| 17 | 18 | ||
| 18 | SRC_URI[sha256sum] = "8fd13eaaa266f7ee91f85c1ea97c86d9c9cc985969db9059cdebcb1e1b7bdbe6" | 19 | SRC_URI[sha256sum] = "8fd13eaaa266f7ee91f85c1ea97c86d9c9cc985969db9059cdebcb1e1b7bdbe6" |
