Opened 16 years ago

Last modified 14 years ago

#704 closed Bugs (fixed)

format zero length string msvc-8 — at Version 5

Reported by: drjohnfoster Owned by: Samuel Krempp
Milestone: Boost 1.35.0 Component: format
Version: None Severity: Problem
Keywords: Cc:

Description (last modified by René Rivera)

Since Microsoft have deprecated most of the standard 
library, their debug libraries also check for unsafe 
pointers. The following code gives an assertion:

(boost::format("%s") % "").str();

In debug mode, basic_string<char>::append(0, 0) 
called from mk_str in feed_args.hpp is tested by the 
macro _DEBUG_POINTER, and decides the pointer is 
invalid even though the count is 0.

I imagine this toxic behaviour is repeated in a 
number of places. It would be nice if the boost 
library could work around this problem at a low level.

Change History (5)

comment:1 by nobody, 16 years ago

Logged In: NO 

According to the C++ standard, basic_string<char>::append(0, 0) returns

basic_string<char>::append(basic_string<char>(0,0))

The standard specifically says the pointer shall not be a null.

So I believe that this was a bug in the boost format library, rather than a problem with the MSVC library. 

comment:2 by magic_op, 16 years ago

Logged In: YES 
user_id=1562825
Originator: NO

This will also happen with an empty string (instead of just a character array/pointer)

std::string my_string;
(boost::format("%1%") % my_string).str();

comment:3 by Samuel Krempp, 15 years ago

Owner: changed from samuel_k to Samuel Krempp
Severity: Problem
Status: assignednew

comment:4 by Samuel Krempp, 15 years ago

Status: newassigned

comment:5 by René Rivera, 15 years ago

Component: Noneformat
Description: modified (diff)
Note: See TracTickets for help on using tickets.