Skip to content

Commit e66c866

Browse files
committed
Fix a problem with ARCH_MAGIC length calculation
1 parent 53ed5db commit e66c866

File tree

3 files changed

+22
-8
lines changed

3 files changed

+22
-8
lines changed

.vscode/launch.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,18 @@
2727
//"preLaunchTask": "ELFIO Test build",
2828
"miDebuggerPath": "/usr/bin/gdb"
2929
},
30+
{
31+
32+
"name": "(Windows) Launch",
33+
"type": "cppvsdbg",
34+
"request": "launch",
35+
"program": "${workspaceFolder}/build/tests/Debug/ELFIOTest.exe",
36+
"args": [],
37+
"stopAtEntry": false,
38+
"cwd": "${workspaceFolder}/build/tests",
39+
"environment": [],
40+
"console": "externalTerminal"
41+
},
3042
{
3143
"name": "Run ELF Dump",
3244
"type": "cppdbg",

ario/ario.hpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ class ario
381381
std::optional<std::reference_wrapper<const ario::Member>>&
382382
added_member )
383383
{
384-
auto& new_member = members_.emplace_back( member );
384+
auto& new_member = members_.emplace_back( member );
385385
new_member.size = data.size();
386386
new_member.pstream = nullptr;
387387
new_member.set_new_data( data );
@@ -432,11 +432,13 @@ class ario
432432
//! @return Error object indicating success or failure
433433
Result load_header()
434434
{
435-
std::string magic( sizeof( ARCH_MAGIC ), ' ' );
436-
pstream->read( &magic[0], sizeof( ARCH_MAGIC ) );
437-
if ( magic != ARCH_MAGIC ) {
435+
auto arch_magic = std::string( ARCH_MAGIC );
436+
auto arch_magic_size = arch_magic.size();
437+
std::string magic( arch_magic_size, ' ' );
438+
pstream->read( &magic[0], arch_magic_size );
439+
if ( magic != arch_magic ) {
438440
return { std::string( "Invalid archive format. Expected magic: " ) +
439-
ARCH_MAGIC };
441+
arch_magic };
440442
}
441443

442444
return {};
@@ -816,7 +818,7 @@ class ario
816818
if ( short_name.size() < 3 ) {
817819
return std::nullopt;
818820
}
819-
auto offset_in_dir = 0;
821+
size_t offset_in_dir = 0;
820822
try {
821823
offset_in_dir = std::stoul( std::string(
822824
short_name.substr( 1, short_name.size() - 2 ) ) );

tests/ARIOTest.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ void compare_archives( const ario& archive1, const ario& archive2 )
266266
{
267267
ASSERT_EQ( archive1.members.size(), archive2.members.size() );
268268

269-
for ( auto i = 0; i < archive1.members.size(); ++i ) {
269+
for ( size_t i = 0; i < archive1.members.size(); ++i ) {
270270
EXPECT_EQ( archive1.members[i].name, archive2.members[i].name );
271271
EXPECT_EQ( archive1.members[i].date, archive2.members[i].date );
272272
EXPECT_EQ( archive1.members[i].uid, archive2.members[i].uid );
@@ -542,7 +542,7 @@ TEST( ARIOTest, new_text_lib )
542542
std::vector<std::string> ref_names = {
543543
"123456789012345", "1234567890123456", "12345678901234567",
544544
"12345", "123456789012345678", "1234567" };
545-
for ( auto i = 0; i < loaded_archive.members.size(); i++ ) {
545+
for ( size_t i = 0; i < loaded_archive.members.size(); i++ ) {
546546
EXPECT_EQ( loaded_archive.members[i].name, ref_names[i] );
547547
EXPECT_EQ( loaded_archive.members[i].size, 5 );
548548
EXPECT_EQ( loaded_archive.members[i].data(), "data\n" );

0 commit comments

Comments
 (0)