Opened 12 years ago

Closed 12 years ago

Last modified 11 years ago

#5355 closed Bugs (fixed)

boost filesystem on Qnx trouble

Reported by: wim@… Owned by: Beman Dawes
Milestone: To Be Determined Component: filesystem
Version: Boost 1.45.0 Severity: Problem
Keywords: Cc:

Description

I had two problems with boost.filesystem in boost 1.46.1 that are addressed with the following patch:

  1. Compilation failure due to missing declaration of ::rename, which is resolved by including stdio.h. See also ticket:5277
  1. Runtime crash (segmentation fault) of boost::filesystem::file_size(...) because struct stat is 60 bytes in operations.cpp whereas everywhere else it is 72 bytes.

This patch fixes both issues (but probably needs to be guarded by proper preprocessor conditionals?)

diff -ru boost_1_46_1/libs/filesystem/v3/src/operations.cpp ../boost_1_46_1/libs/filesystem/v3/src/operations.cpp
--- boost_1_46_1/libs/filesystem/v3/src/operations.cpp	2011-03-03 18:00:21.000000000 +0000
+++ ../boost_1_46_1/libs/filesystem/v3/src/operations.cpp	2011-03-22 15:40:32.000000000 +0000
@@ -32,7 +32,7 @@
 
 #if !(defined(__HP_aCC) && defined(_ILP32) && \
       !defined(_STATVFS_ACPP_PROBLEMS_FIXED))
-#define _FILE_OFFSET_BITS 64 // at worst, these defines may have no effect,
+//#define _FILE_OFFSET_BITS 64 // at worst, these defines may have no effect,
 #endif
 #if !defined(__PGI)
 #define __USE_FILE_OFFSET64 // but that is harmless on Windows and on POSIX
@@ -182,6 +182,7 @@
 #include <string>
 #include <cstring>
 #include <cstdio>      // for remove, rename
+#include <stdio.h>
 #include <cerrno>
 #include <cassert>
 // #include <iostream>    // for debugging only; comment out when not in use

Attachments (1)

operations.cpp_64.patch (2.5 KB ) - added by Niklas Angare <li51ckf02@…> 11 years ago.

Download all attachments as: .zip

Change History (6)

comment:1 by Steven Watanabe, 12 years ago

Component: Nonefilesystem
Owner: set to Beman Dawes

comment:2 by Beman Dawes, 12 years ago

Resolution: fixed
Status: newclosed

(In [71131]) Fix #5355 QNX workarounds

by Niklas Angare <li51ckf02@…>, 11 years ago

Attachment: operations.cpp_64.patch added

comment:3 by Niklas Angare <li51ckf02@…>, 11 years ago

I've attached a proper fix to issue 2 that enables large file support. The problem was that the *FILE_OFFSET* defines were defined after some system header files were included indirectly by boost/config.hpp. I've simply moved the code block to the top and removed "!defined(__QNXNTO__) &&".

All regression tests on the release branch pass with the patch applied and a small test program is able to correctly report the size of a file that is larger than 4 gigs.

comment:4 by Beman Dawes, 11 years ago

(In [72278]) Fix #5355, QNX large file issues. Thanks to Niklas Angare for investigating, patch, and testing.

comment:5 by Niklas Angare <li51ckf02@…>, 11 years ago

Thanks! Any chance of this making it into 1.47? As you may have noticed trunk tests passed on QNX (runner NA-QNX650-qcc-gnu0x) after you submitted the change.

Note: See TracTickets for help on using tickets.