diff options
author | Jeremy Allison <jra@samba.org> | 2003-07-07 20:22:35 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2003-07-07 20:22:35 +0000 |
commit | 45ac30db09332bc5de20ea15cc07c25ebc6fb6f7 (patch) | |
tree | 55ffdf2f8142451fe7d6e596fae0212ebde47b9f /source3/smbd/statcache.c | |
parent | fbc5f7e207ad5aad9812f742f38ca36c4b8d36d9 (diff) | |
download | samba-45ac30db09332bc5de20ea15cc07c25ebc6fb6f7.tar.gz samba-45ac30db09332bc5de20ea15cc07c25ebc6fb6f7.tar.bz2 samba-45ac30db09332bc5de20ea15cc07c25ebc6fb6f7.zip |
Fix from MORIYAMA Masayuki <msyk@mtg.biglobe.ne.jp> for new MB statcache
code. Bug #185.
Jeremy.
(This used to be commit 7a1ac7be42dfb90fd44f2c51810eedcea052386b)
Diffstat (limited to 'source3/smbd/statcache.c')
-rw-r--r-- | source3/smbd/statcache.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/source3/smbd/statcache.c b/source3/smbd/statcache.c index 5d54a5c4ff..22b8a33a1e 100644 --- a/source3/smbd/statcache.c +++ b/source3/smbd/statcache.c @@ -270,16 +270,18 @@ BOOL stat_cache_lookup(connection_struct *conn, pstring name, pstring dirpath, if (!sizechanged) { memcpy(name, scp->translated_path, MIN(sizeof(pstring)-1, scp->translated_path_length)); + } else if (num_components == 0) { + pstrcpy(name, scp->translated_path); } else { - pstring last_component; sp = strnrchr_m(name, '/', num_components); - if (!sp) { - /* Logic error. */ - smb_panic("logic error in stat_cache_lookup\n"); + if (sp) { + pstring last_component; + pstrcpy(last_component, sp); + pstrcpy(name, scp->translated_path); + pstrcat(name, last_component); + } else { + pstrcpy(name, scp->translated_path); } - pstrcpy(last_component, sp); - pstrcpy(name, scp->translated_path); - pstrcat(name, last_component); } /* set pointer for 'where to start' on fixing the rest of the name */ |