gdb: avoid unnecessary string copy in auto_load_objfile_script_1
authorSimon Marchi <simon.marchi@polymtl.ca>
Mon, 5 Oct 2020 13:02:42 +0000 (09:02 -0400)
committerSimon Marchi <simon.marchi@polymtl.ca>
Mon, 5 Oct 2020 13:03:09 +0000 (09:03 -0400)
Assigning the result of STRIP_DRIVE_SPEC to an std::string creates an
unnecessary copy of the string.  STRIP_DRIVE_SPEC is defined as:

  #define STRIP_DRIVE_SPEC(f) ((f) + 2)

So if it is passed a "const char *", it returns a "const char *".  We
could use a "const char *" intermediary variable instead of an
std::string, or (as implemented in this patch) just use it directly in
the concatenation right after.

gdb/ChangeLog:

* auto-load.c (auto_load_objfile_script_1): Don't use
debugfile_holder as temporary variable when stripping drive
letter.

Change-Id: If2ccc7a156b22100754d9cdf6778ac7eeb93da4c

gdb/ChangeLog
gdb/auto-load.c

index 57e8cc7b2d4f30b03bf08cd5389cdd87aff107f6..39a2cf352297e6b20756eb2fbef9f4fa744151e2 100644 (file)
@@ -1,3 +1,9 @@
+2020-10-05  Simon Marchi  <simon.marchi@polymtl.ca>
+
+       * auto-load.c (auto_load_objfile_script_1): Don't use
+       debugfile_holder as temporary variable when stripping drive
+       letter.
+
 2020-10-05  Hannes Domani  <ssbssa@yahoo.de>
 
        * amd64-windows-tdep.c (amd64_windows_passed_by_integer_register):
index 9a51d2f3dc6c5f9024a26c5c1dbe64f66ff9cfe4..43d007ca5b0334dd12aa2f3f3fd7bfc30aba52c7 100644 (file)
@@ -777,10 +777,8 @@ auto_load_objfile_script_1 (struct objfile *objfile, const char *realname,
 
       /* Convert Windows file name from c:/dir/file to /c/dir/file.  */
       if (HAS_DRIVE_SPEC (debugfile))
-       {
-         debugfile_holder = STRIP_DRIVE_SPEC (debugfile);
-         filename = std::string("\\") + debugfile[0] + debugfile_holder;
-       }
+       filename = (std::string("\\") + debugfile[0]
+                   + STRIP_DRIVE_SPEC (debugfile));
 
       for (const gdb::unique_xmalloc_ptr<char> &dir : vec)
        {