xiaoxiang781216 edited a comment on pull request #5476:
URL: https://github.com/apache/incubator-nuttx/pull/5476#issuecomment-1039106422


   > I see 4 issues with this PR.
   > 
   > 1. It changes code not described by the PR (minor zalloc)
   
   because memset(since it become built-in, compiler do more check) report the 
wrong usage:
   ```
   memset(ap_list_buffer, 0x0, sizeof(ap_list_buffer));
   ```
   should change to:
   ```
   memset(ap_list_buffer, 0x0, sizeof(*ap_list_buffer));
   ```
   The more simple fix is kmm_zalloc and remove memset.
   
   > 2. It removing all the null checks in the library
   
   Yes, because compiler give the follow warning:
   ```
   stdio/lib_fputs.c: In function 'fputs':
   Error: stdio/lib_fputs.c:99:9: error: nonnull argument 's' compared to NULL 
[-Werror=nonnull-compare]
      if (s == NULL || stream == NULL)
            ^
   Error: stdio/lib_fputs.c:99:27: error: nonnull argument 'stream' compared to 
NULL [-Werror=nonnull-compare]
      if (s == NULL || stream == NULL)
                              ^
   
   stdio/lib_vfprintf.c: In function 'vfprintf':
   Error: stdio/lib_vfprintf.c:40:6: error: nonnull argument 'stream' compared 
to NULL [-Werror=nonnull-compare]
      if (stream)
         ^
   
   string/lib_strdup.c: In function 'strdup':
   Error: string/lib_strdup.c:39:6: error: nonnull argument 's' compared to 
NULL [-Werror=nonnull-compare]
      if (s)
         ^
   
   string/lib_strndup.c: In function 'strndup':
   Error: string/lib_strndup.c:56:6: error: nonnull argument 's' compared to 
NULL [-Werror=nonnull-compare]
      if (s)
         ^
   
   string/lib_strpbrk.c: In function 'strpbrk':
   Error: string/lib_strpbrk.c:39:7: error: nonnull argument 'str' compared to 
NULL [-Werror=nonnull-compare]
      if (!str || !charset)
          ^~~~
   Error: string/lib_strpbrk.c:39:15: error: nonnull argument 'charset' 
compared to NULL [-Werror=nonnull-compare]
      if (!str || !charset)
                  ^~~~~~~~
   
   string/lib_strrchr.c: In function 'strrchr':
   Error: string/lib_strrchr.c:40:6: error: nonnull argument 's' compared to 
NULL [-Werror=nonnull-compare]
      if (s)
         ^
   ```
   compiler has the internal knowledge about these built-in API.
   
   > 3. increasing stack requirements by 128 in a lib funtion
   
   This is another warning reported by compiler since printf become built-in:
   
   ```
   Error: time/lib_asctimer.c:73:50: error: '%d' directive output may be 
truncated writing between 1 and 11 bytes into a region of size between 0 and 12 
[-Werror=format-truncation=]
      snprintf(buf, 26, "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n",
                                                     ^~
   time/lib_asctimer.c:73:21: note: directive argument in the range 
[-2147481748, 2147483647]
      snprintf(buf, 26, "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n",
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   time/lib_asctimer.c:73:3: note: 'snprintf' output between 17 and 68 bytes 
into a destination of size 26
      snprintf(buf, 26, "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n",
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
               g_wday_name[tp->tm_wday], g_mon_name[tp->tm_mon],
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
               tp->tm_mday, tp->tm_hour, tp->tm_min, tp->tm_sec,
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
               1900 + tp->tm_year);
               ~~~~~~~~~~~~~~~~~~~
   ```
   
   
   > 4. switching out legacy proven code with know characteristic without being 
able to control it seem wrong and coupling it with removing null checks makes 
it worse.
   
   Reply before. All these change because GCC give more warning with the 
knowledge or assumption about the built-in functions.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@nuttx.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to