This fixes a FAIL on Solaris, due to a difference between the GNU and
Solaris versions of sendfile(2).

2016-10-27  Uros Bizjak  <ubiz...@gmail.com>

        PR libstdc++/70975
        * src/filesystem/ops.cc (do_copy_file): Pass non-null pointer to
        sendfile for offset argument.

Tested powerpc64le-linux, committed to trunk.

commit 27d5ce18d1d752dafb757ba31948aa1bb32cf122
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Thu Oct 27 15:23:10 2016 +0100

    PR70975 Pass valid offset argument to sendfile
    
    2016-10-27  Uros Bizjak  <ubiz...@gmail.com>
    
        PR libstdc++/70975
        * src/filesystem/ops.cc (do_copy_file): Pass non-null pointer to
        sendfile for offset argument.

diff --git a/libstdc++-v3/src/filesystem/ops.cc 
b/libstdc++-v3/src/filesystem/ops.cc
index 9abcee0..8ed0a10 100644
--- a/libstdc++-v3/src/filesystem/ops.cc
+++ b/libstdc++-v3/src/filesystem/ops.cc
@@ -444,7 +444,8 @@ namespace
       }
 
 #ifdef _GLIBCXX_USE_SENDFILE
-    const auto n = ::sendfile(out.fd, in.fd, nullptr, from_st->st_size);
+    off_t offset = 0;
+    const auto n = ::sendfile(out.fd, in.fd, &offset, from_st->st_size);
     if (n < 0 && (errno == ENOSYS || errno == EINVAL))
       {
 #endif

Reply via email to