[Fwd: Re: DbgHelp: Fix for Includes with Relative Paths]
Eric Pouech
pouech-eric at wanadoo.fr
Fri Sep 3 14:04:19 CDT 2004
Rob never sent this for cvs inclusion. This should go in.
-------- Message original --------
Sujet: Re: DbgHelp: Fix for Includes with Relative Paths
De: Robert Shearman <rob at codeweavers.com>
Eric Pouech wrote:
> Robert Shearman a écrit :
>
>> How does the attached patch look?
>
> better, but you should to nuke srcpath (and no longer currpath) in
> N_SO case, when *ptr is '\0' (it's defensive code, so it shouldn't
> harm on normally formed stabs file). As a side effect, you don't need
> also to memset currpath to 0 at the beginning of func
Is the attached patch correct?
Rob
-------------- next part --------------
Index: wine/dlls/dbghelp/stabs.c
===================================================================
RCS file: /home/wine/wine/dlls/dbghelp/stabs.c,v
retrieving revision 1.8
diff -u -p -r1.8 stabs.c
--- wine/dlls/dbghelp/stabs.c 23 Aug 2004 17:56:07 -0000 1.8
+++ wine/dlls/dbghelp/stabs.c 24 Aug 2004 20:49:54 -0000
@@ -1085,8 +1085,8 @@ SYM_TYPE stabs_parse(struct module* modu
struct symt_function* curr_func = NULL;
struct symt_block* block = NULL;
struct symt_compiland* compiland = NULL;
- char currpath[PATH_MAX];
- char srcpath[PATH_MAX];
+ char currpath[PATH_MAX]; /* path to current file */
+ char srcpath[PATH_MAX]; /* path to directory source file is in */
int i, j;
int nstab;
const char* ptr;
@@ -1108,7 +1108,6 @@ SYM_TYPE stabs_parse(struct module* modu
stab_ptr = (const struct stab_nlist*)(addr + staboff);
strs = (const char*)(addr + strtaboff);
- memset(currpath, 0, sizeof(currpath));
memset(srcpath, 0, sizeof(srcpath));
memset(stabs_basic, 0, sizeof(stabs_basic));
@@ -1377,7 +1376,7 @@ SYM_TYPE stabs_parse(struct module* modu
if (*ptr == '\0') /* end of N_SO file */
{
/* Nuke old path. */
- currpath[0] = '\0';
+ srcpath[0] = '\0';
stabs_finalize_function(module, curr_func);
curr_func = NULL;
source_idx = -1;
@@ -1387,20 +1386,17 @@ SYM_TYPE stabs_parse(struct module* modu
}
else
{
- stabs_reset_includes();
- if (*ptr != '/')
+ int len = strlen(ptr);
+ if (ptr[len-1] != '/')
{
strcpy(currpath, srcpath);
strcat(currpath, ptr);
+ stabs_reset_includes();
compiland = symt_new_compiland(module, currpath);
source_idx = source_new(module, currpath);
}
else
- {
strcpy(srcpath, ptr);
- compiland = symt_new_compiland(module, srcpath);
- source_idx = source_new(module, srcpath);
- }
}
break;
case N_SOL:
More information about the wine-patches
mailing list