Boost logo

Boost :

From: Beman Dawes (bdawes_at_[hidden])
Date: 2006-02-24 08:51:33


"Arjen Wagenaar" <arjenw_at_[hidden]> wrote in message
news:20060224121751.FPCF21854.amsfep16-int.chello.nl_at_codeshop6ftss7...
> Hi Beman,
>
>> PS: I'd like to hear from programmers using wide character file names.
>> Are
>> they working OK? Are they meeting your needs?
>
> I have been updating a windows application (using MSVC7.1, 13.10.3077, and
> the latest cvs) to support wpaths. It all works pretty much as expected
> and
> it didn't take much time to make the changes.
>
> Let me list a few things I've found so far.
>
> == fstream_test asserts
>
> All the tests pass, except for the fstream_test. Here's the output:
>
> execute-test
> ..\..\..\bin\boost\libs\filesystem\test\fstream_test.test\vc-7_1\debug\threa
> ding-multi\fstream_test.run
> ====== BEGIN OUTPUT ======
> path tests:
> in test 1
> in test 2
> in test 3
> in test 4
> in test 4.1
> in test 5
> in test 6
> in test 7
> in test 8
> in test 9
> in test 10
> in test 11
> in test 12
> in test 13
> in test 14
> in test 15
>
> wpath tests:
> in test 1
> in test 2
> in test 3
> in test 4
> in test 4.1
> C:\cvs\boost\boost/test/minimal.hpp(122): exception "fopen.c(55) :
> Assertion
> failed: *file != _T('\0')" caught in function: 'int __cdecl main(int,char
> *[])'

This is working on VC++ 8.0 (and other compilers) but failing on 7.1. I'm on
the road, and don't have 7.1 installed on my laptop so won't be able to
check this out until I get home next week. It is failing on the official
regression tests, too, so won't be forgotten.

>
> == missing inline (multiple defined symbols)
>
> There seems to be an inline missing in fstream.hpp (line 45) for the
> narrow_path() call.

Fixed in CVS. A better fix would be to move both narrow_path() functions to
a separate compilation, but I don't want to do that so close to a release.
In the meantime, your suggested "inline" fix has been applied so that should
work for now.

>
> == openmode differences for path/wpath
>
> I ran into a few calls where fs::ofstreams where opened in binary mode,
> but
> the std::ios_base::out flag wasn't specified. This worked fine for paths,
> but for wpaths this was giving asserts as the narrow_path() function
> specifically checks for this flag.

Good catch. CVS has been changed to OR in the correct flag. The problem also
affected ifstreams and fstreams.

Thanks for the reports,

--Beman


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk