|
Boost : |
From: Eames, Andrew (andrew_at_[hidden])
Date: 2008-01-09 08:49:15
I posted this on the boost users group but got no final answer - this
looks like a bug to me or am I just using it incorrectly?
Andrew
From: Eames, Andrew
Sent: Friday, January 04, 2008 1:13 PM
To: 'boost-users_at_[hidden]'
Subject: Re: [Boost-users] base 64 encoding
I must be missing something fundamental here. The following code
fragment doesn't work (VC++ 8.0 SP1) - the checked iterators in STL
catch walking off the end of the source - transform_width is attempting
to access the second element of the vector
typedef
base64_from_binary<
transform_width<vector<char>::const_iterator, 6, 8>
> base64_t;
vector<char> hippo(1);
string enc(base64_t(hippo.begin()), base64_t(hippo.end())); // ->
checked iterator assertion fires
In basic_text_oprimitive.ipp, the iterator is a pointer so it's possible
it may be silently doing something bad
Andrew
From: boost-users-bounces_at_[hidden]
[mailto:boost-users-bounces_at_[hidden]] On Behalf Of Robert Ramey
Sent: Friday, January 04, 2008 11:58 AM
To: boost-users_at_[hidden]
Subject: [Spam:***** SpamScore] Re: [Boost-users] base 64 encoding
Take a look at basic_text_oprimitive.ipp around line # 64.
Note that I add "padding" here to address this problem. Perhaps that is
the missing
magic. Hmmm. perhaps that code should be part of the iterator.
Also look at the code text_iterators_base64 in the serialization test
suite.
Robert Ramey
"Eames, Andrew" <andrew_at_[hidden]> wrote in message
news:8F37BF6F420455468C4BD57DD6BE199004C6146B_at_cobra.pc.cognex.com...
But there is still the problem with running off the end of the
source - If the source is not a multiple of 3 bytes then the input
iterator will run off the end of the input sequence which can cause an
error.
Andrew
From: boost-users-bounces_at_[hidden]
[mailto:boost-users-bounces_at_[hidden]] On Behalf Of Robert Ramey
Sent: Thursday, January 03, 2008 6:47 PM
To: boost-users_at_[hidden]
Subject: Re: [Boost-users] base 64 encoding
I had to separately record the number of bytes. Then when I
decode, just pull off that number of bytes.
Robert Ramey
"Eames, Andrew" <andrew_at_[hidden]> wrote in message
news:8F37BF6F420455468C4BD57DD6BE199004C613F8_at_cobra.pc.cognex.com...
Hi,
I'm trying to encode base64 data by composing
base64_from_binary with transform_width but this doesn't appear to work
correctly when the data is not a multiple of 3 long. What is the correct
way to handle this - do I have to handle the padding myself by
extending the input data and then patching the tail of the result?
Thanks
Andrew
________________________________
_______________________________________________
Boost-users mailing list
Boost-users_at_[hidden]
http://lists.boost.org/mailman/listinfo.cgi/boost-users
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk