From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15531 invoked by alias); 15 Mar 2003 10:56:01 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 15470 invoked by uid 71); 15 Mar 2003 10:56:00 -0000 Resent-Date: 15 Mar 2003 10:56:00 -0000 Resent-Message-ID: <20030315105600.15469.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, peturr02@ru.is Received: (qmail 31788 invoked by uid 48); 15 Mar 2003 10:47:32 -0000 Message-Id: <20030315104732.31786.qmail@sources.redhat.com> Date: Sat, 15 Mar 2003 10:56:00 -0000 From: peturr02@ru.is Reply-To: peturr02@ru.is To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: libstdc++/10096: Input impossible with basic_filebuf with custom traits type. X-SW-Source: 2003-03/txt/msg00970.txt.bz2 List-Id: >Number: 10096 >Category: libstdc++ >Synopsis: Input impossible with basic_filebuf with custom traits type. >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sat Mar 15 10:56:00 UTC 2003 >Closed-Date: >Last-Modified: >Originator: peturr02@ru.is >Release: gcc mainline from 20030312 >Organization: >Environment: Red Hat Linux 8.0 >Description: basic_filebuf::sbumpc() returns an endless stream of zeros when Traits is a user-defined traits class. This happens both when the file is closed and when it is open. >How-To-Repeat: See attachment. >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: text/plain; name="instbug2.cc" Content-Disposition: inline; filename="instbug2.cc" #include #include #undef NDEBUG #include class MyTraits : public std::char_traits { }; int main() { using namespace std; const char* name = "tmp"; const char* strlit = "The Grand Wazoo"; streamsize len = strlen(strlit); filebuf fbout; fbout.open(name, ios_base::out | ios_base::trunc); fbout.sputn(strlit, len); fbout.close(); char buf[1024]; basic_filebuf fb; assert(fb.sgetc() == MyTraits::eof()); fb.open("instbug2.cc", ios_base::in); assert(fb.is_open()); assert(fb.sgetc() != MyTraits::eof()); streamsize n = fb.sgetn(buf, sizeof(buf)); assert(n == len); assert(!memcmp(buf, strlit, len)); fb.close(); assert(!fb.is_open()); assert(fb.sgetc() == MyTraits::eof()); return 0; }