* exceptions.cc (open_stackdumpfile): Correctly append .stackdump
suffix. * nlsfuncs.cc (rebase_locale_buf): Reorder arguments. Accommodate throughout. Add pointer to end of buffer and avoid changing pointers not pointing into the buffer.
This commit is contained in:
parent
80a10a3972
commit
ded1f66c2d
@ -1,3 +1,12 @@
|
|||||||
|
2010-06-01 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
|
* exceptions.cc (open_stackdumpfile): Correctly append .stackdump
|
||||||
|
suffix.
|
||||||
|
|
||||||
|
* nlsfuncs.cc (rebase_locale_buf): Reorder arguments. Accommodate
|
||||||
|
throughout. Add pointer to end of buffer and avoid changing pointers
|
||||||
|
not pointing into the buffer.
|
||||||
|
|
||||||
2010-06-01 Corinna Vinschen <corinna@vinschen.de>
|
2010-06-01 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* fhandler_netdrive.cc (fhandler_netdrive::exists): Always free WNet
|
* fhandler_netdrive.cc (fhandler_netdrive::exists): Always free WNet
|
||||||
|
@ -140,12 +140,11 @@ open_stackdumpfile ()
|
|||||||
p = myself->progname;
|
p = myself->progname;
|
||||||
|
|
||||||
WCHAR corefile[wcslen (p) + sizeof (".stackdump")];
|
WCHAR corefile[wcslen (p) + sizeof (".stackdump")];
|
||||||
wcscpy(corefile, p);
|
wcpcpy (wcpcpy(corefile, p), L".stackdump");
|
||||||
UNICODE_STRING ucore;
|
UNICODE_STRING ucore;
|
||||||
OBJECT_ATTRIBUTES attr;
|
OBJECT_ATTRIBUTES attr;
|
||||||
/* Create the UNICODE variation of <progname>.stackdump. */
|
/* Create the UNICODE variation of <progname>.stackdump. */
|
||||||
RtlInitUnicodeString (&ucore, corefile);
|
RtlInitUnicodeString (&ucore, corefile);
|
||||||
RtlAppendUnicodeToString (&ucore, L".stackdump");
|
|
||||||
/* Create an object attribute which refers to <progname>.stackdump
|
/* Create an object attribute which refers to <progname>.stackdump
|
||||||
in Cygwin's cwd. Stick to caseinsensitivity. */
|
in Cygwin's cwd. Stick to caseinsensitivity. */
|
||||||
InitializeObjectAttributes (&attr, &ucore, OBJ_CASE_INSENSITIVE,
|
InitializeObjectAttributes (&attr, &ucore, OBJ_CASE_INSENSITIVE,
|
||||||
|
@ -335,13 +335,13 @@ locale_cmp (const void *a, const void *b)
|
|||||||
arrays. What we do here is just treat the lc_foo pointers as char ** and
|
arrays. What we do here is just treat the lc_foo pointers as char ** and
|
||||||
rebase all char * pointers within, up to the given size of the structure. */
|
rebase all char * pointers within, up to the given size of the structure. */
|
||||||
static void
|
static void
|
||||||
rebase_locale_buf (const void *ptrv, const char *newbase, const char *oldbase,
|
rebase_locale_buf (const void *ptrv, const void *ptrvend, const char *newbase,
|
||||||
const void *ptrvend)
|
const char *oldbase, const char *oldend)
|
||||||
{
|
{
|
||||||
const char **ptrs = (const char **) ptrv;
|
|
||||||
const char **ptrsend = (const char **) ptrvend;
|
const char **ptrsend = (const char **) ptrvend;
|
||||||
while (ptrs < ptrsend)
|
for (const char **ptrs = (const char **) ptrv; ptrs < ptrsend; ++ptrs)
|
||||||
*ptrs++ += newbase - oldbase;
|
if (*ptrs >= oldbase && *ptrs < oldend)
|
||||||
|
*ptrs += newbase - oldbase;
|
||||||
}
|
}
|
||||||
|
|
||||||
static wchar_t *
|
static wchar_t *
|
||||||
@ -686,8 +686,8 @@ __set_lc_time_from_win (const char *name,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (tmp != new_lc_time_buf)
|
if (tmp != new_lc_time_buf)
|
||||||
rebase_locale_buf (_time_locale, tmp, new_lc_time_buf,
|
rebase_locale_buf (_time_locale, _time_locale + 1, tmp,
|
||||||
_time_locale + 1);
|
new_lc_time_buf, lc_time_ptr);
|
||||||
lc_time_ptr = tmp + (lc_time_ptr - new_lc_time_buf);
|
lc_time_ptr = tmp + (lc_time_ptr - new_lc_time_buf);
|
||||||
new_lc_time_buf = tmp;
|
new_lc_time_buf = tmp;
|
||||||
lc_time_end = new_lc_time_buf + len;
|
lc_time_end = new_lc_time_buf + len;
|
||||||
@ -748,8 +748,8 @@ __set_lc_time_from_win (const char *name,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (tmp != new_lc_time_buf)
|
if (tmp != new_lc_time_buf)
|
||||||
rebase_locale_buf (_time_locale, tmp, new_lc_time_buf,
|
rebase_locale_buf (_time_locale, _time_locale + 1, tmp,
|
||||||
_time_locale + 1);
|
new_lc_time_buf, lc_time_ptr);
|
||||||
if (*lc_time_buf)
|
if (*lc_time_buf)
|
||||||
free (*lc_time_buf);
|
free (*lc_time_buf);
|
||||||
*lc_time_buf = tmp;
|
*lc_time_buf = tmp;
|
||||||
@ -823,8 +823,8 @@ __set_lc_ctype_from_win (const char *name,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (tmp != new_lc_ctype_buf)
|
if (tmp != new_lc_ctype_buf)
|
||||||
rebase_locale_buf (_ctype_locale, tmp, new_lc_ctype_buf,
|
rebase_locale_buf (_ctype_locale, _ctype_locale + 1, tmp,
|
||||||
_ctype_locale + 1);
|
new_lc_ctype_buf, lc_ctype_ptr);
|
||||||
if (*lc_ctype_buf)
|
if (*lc_ctype_buf)
|
||||||
free (*lc_ctype_buf);
|
free (*lc_ctype_buf);
|
||||||
*lc_ctype_buf = tmp;
|
*lc_ctype_buf = tmp;
|
||||||
@ -883,8 +883,8 @@ __set_lc_numeric_from_win (const char *name,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (tmp != new_lc_numeric_buf)
|
if (tmp != new_lc_numeric_buf)
|
||||||
rebase_locale_buf (_numeric_locale, tmp, new_lc_numeric_buf,
|
rebase_locale_buf (_numeric_locale, _numeric_locale + 1, tmp,
|
||||||
_numeric_locale + 1);
|
new_lc_numeric_buf, lc_numeric_ptr);
|
||||||
if (*lc_numeric_buf)
|
if (*lc_numeric_buf)
|
||||||
free (*lc_numeric_buf);
|
free (*lc_numeric_buf);
|
||||||
*lc_numeric_buf = tmp;
|
*lc_numeric_buf = tmp;
|
||||||
@ -1010,8 +1010,8 @@ __set_lc_monetary_from_win (const char *name,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (tmp != new_lc_monetary_buf)
|
if (tmp != new_lc_monetary_buf)
|
||||||
rebase_locale_buf (_monetary_locale, tmp, new_lc_monetary_buf,
|
rebase_locale_buf (_monetary_locale, _monetary_locale + 1, tmp,
|
||||||
_monetary_locale + 1);
|
new_lc_monetary_buf, lc_monetary_ptr);
|
||||||
if (*lc_monetary_buf)
|
if (*lc_monetary_buf)
|
||||||
free (*lc_monetary_buf);
|
free (*lc_monetary_buf);
|
||||||
*lc_monetary_buf = tmp;
|
*lc_monetary_buf = tmp;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user