ir_linkdata_dlink_name
authorken <ken@mihrtec.com>
Mon, 20 Feb 2017 15:23:23 +0000 (07:23 -0800)
committerken <ken@mihrtec.com>
Mon, 20 Feb 2017 15:23:23 +0000 (07:23 -0800)
src/ir.c

index 12a7188..d42c170 100644 (file)
--- a/src/ir.c
+++ b/src/ir.c
@@ -747,6 +747,7 @@ ir_linkdata_dlink_name
   uint8_t*              bytep;\r
   size_t                bytes;\r
   char                  setpass;\r
+  uint8_t               delimiter;\r
   assert_link(link);\r
   if (link->link.dlink != NULL)\r
     return link->link.dlink;\r
@@ -764,8 +765,8 @@ ir_linkdata_dlink_name
  count_bytes_in_namelist:\r
   while (namelist_iter != NULL)\r
     { bytep = namelist_iter->name;\r
-      while (*bytep++)\r
-       bytes++;\r
+      while (*bytep++);\r
+      bytes += (bytep - namelist_iter->name);\r
       namelist_iter = namelist_iter->nextsib;\r
     }\r
   if (setpass == 0)\r
@@ -779,16 +780,19 @@ ir_linkdata_dlink_name
   link->link.dlink[bytes++] = '.'; //dlinks start with '.'\r
   namelist_iter = classld->namelist;\r
   setpass = 0;\r
+  delimiter = '-'; //class delimiter\r
  copy_bytes_in_namelist:\r
   while (namelist_iter != NULL)\r
     { bytep = namelist_iter->name;\r
       while (*bytep)\r
        link->link.dlink[bytes++] = *bytep++;\r
+      link->link.dlink[bytes++] = delimiter;\r
       namelist_iter = namelist_iter->nextsib;\r
     }\r
   if (setpass == 0)\r
     { setpass = 1;\r
       namelist_iter = setld->namelist;\r
+      delimiter = '_'; //set delimiter\r
       goto copy_bytes_in_namelist;\r
     }\r
   link->link.dlink[bytes] = '\0'; //tailing '\0' null termination\r