Use strtok_r instead of strsep in rust_get_disr_info

strsep doesn't exist on Windows.

2016-06-29  Manish Goregaokar  <manish@mozilla.com>

gdb/ChangeLog:
    * rust-lang.c (rust_get_disr_info): Use strtok_r instead of strsep.
This commit is contained in:
Manish Goregaokar 2016-06-29 15:42:28 +05:30
parent d691934d08
commit a405c2281a
No known key found for this signature in database
GPG Key ID: 3BBF4D3E2EF79F98
2 changed files with 10 additions and 3 deletions

View File

@ -1,3 +1,8 @@
2016-06-29 Manish Goregaokar <manish@mozilla.com>
gdb/ChangeLog:
* rust-lang.c (rust_get_disr_info): Use strtok_r instead of strsep.
2016-06-28 Yao Qi <yao.qi@linaro.org> 2016-06-28 Yao Qi <yao.qi@linaro.org>
* aarch64-tdep.c (aarch64_displaced_step_b): Use int64_t for * aarch64-tdep.c (aarch64_displaced_step_b): Use int64_t for

View File

@ -121,7 +121,7 @@ rust_get_disr_info (struct type *type, const gdb_byte *valaddr,
if (strncmp (TYPE_FIELD_NAME (type, 0), RUST_ENUM_PREFIX, if (strncmp (TYPE_FIELD_NAME (type, 0), RUST_ENUM_PREFIX,
strlen (RUST_ENUM_PREFIX)) == 0) strlen (RUST_ENUM_PREFIX)) == 0)
{ {
char *name, *tail, *token; char *tail, *token, *name, *saveptr;
unsigned long fieldno; unsigned long fieldno;
struct type *member_type; struct type *member_type;
LONGEST value; LONGEST value;
@ -145,7 +145,9 @@ rust_get_disr_info (struct type *type, const gdb_byte *valaddr,
traversed in order to find the field (which may be several fields deep) traversed in order to find the field (which may be several fields deep)
and the variantname is the name of the variant of the case when the and the variantname is the name of the variant of the case when the
field is zero. */ field is zero. */
while ((token = strsep (&tail, "$")) != NULL) for (token = strtok_r (tail, "$", &saveptr);
token != NULL;
token = strtok_r (NULL, "$", &saveptr))
{ {
if (sscanf (token, "%lu", &fieldno) != 1) if (sscanf (token, "%lu", &fieldno) != 1)
{ {
@ -161,7 +163,7 @@ rust_get_disr_info (struct type *type, const gdb_byte *valaddr,
member_type = TYPE_FIELD_TYPE (member_type, fieldno); member_type = TYPE_FIELD_TYPE (member_type, fieldno);
} }
if (token >= name + strlen (TYPE_FIELD_NAME (type, 0))) if (token == NULL)
error (_("Invalid form for %s"), RUST_ENUM_PREFIX); error (_("Invalid form for %s"), RUST_ENUM_PREFIX);
value = unpack_long (member_type, valaddr + embedded_offset); value = unpack_long (member_type, valaddr + embedded_offset);