From owner-freebsd-doc@FreeBSD.ORG Fri Jul 1 06:30:29 2005 Return-Path: X-Original-To: freebsd-doc@hub.freebsd.org Delivered-To: freebsd-doc@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2600016A41C for ; Fri, 1 Jul 2005 06:30:29 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 105F443D53 for ; Fri, 1 Jul 2005 06:30:29 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.3/8.13.3) with ESMTP id j616US8g055974 for ; Fri, 1 Jul 2005 06:30:28 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.3/8.13.1/Submit) id j616USH6055973; Fri, 1 Jul 2005 06:30:28 GMT (envelope-from gnats) Date: Fri, 1 Jul 2005 06:30:28 GMT Message-Id: <200507010630.j616USH6055973@freefall.freebsd.org> To: freebsd-doc@FreeBSD.org From: Vlad Skvortsov Cc: Subject: Re: docs/82508: misleading man page for basename/dirname X-BeenThere: freebsd-doc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Vlad Skvortsov List-Id: Documentation project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jul 2005 06:30:29 -0000 The following reply was made to PR docs/82508; it has been noted by GNATS. From: Vlad Skvortsov To: Giorgos Keramidas Cc: Vlad Skvortsov , bug-followup@freebsd.org Subject: Re: docs/82508: misleading man page for basename/dirname Date: Thu, 30 Jun 2005 23:24:25 -0700 Giorgos Keramidas wrote: > On 2005-06-22 02:51, Vlad Skvortsov wrote: > >>The man pages for both basename(3) and dirname(3) state that the >>functions return pointers to the internal _static_ storage. However, >>those functions actually perform malloc() call to allocate storage on >>the first invocation. Thus, the memory pointer returned is actually a >>pointer to internal but dynamically allocated storage. >> >>I don't know whether this violates standard or not, but the >>documentation is misleading. > > > The term 'static' here is a warning that these functions are not thread-safe. > > It does NOT mean that the ``bname'' object that is internal to basename() is > actually an array declared as: > > char bname[MAXPATHLEN]; > > It merely means that multiple invocations of the function from concurrent > threads may clobber each other's data, so some form of locking should be used > around calls to basename() from threaded applications or the function should > be avoided altogether. > Yes, I do understand what it supposed to mean. But, anyway, 'static' means 'static', not (not only) 'thread-safe'. ;-) I've ran into this issue while running a testsuite checking for memory leaks. I expected those values to be static, not thread-safe. -- Vlad Skvortsov, vss@73rus.com, vss@high.net.ru