ソースを参照

fix: change return value of snprintf to ssize_t

greatbridf 3 年 前
コミット
91cf3e6e82
4 ファイル変更14 行追加12 行削除
  1. 4 2
      CMakeLists.txt
  2. 2 2
      include/kernel/stdio.h
  3. 7 7
      src/kernel/stdio.c
  4. 1 1
      src/types/buffer.c

+ 4 - 2
CMakeLists.txt

@@ -23,10 +23,12 @@ add_custom_command(OUTPUT extracted_bootloader
 
 project(kernel_main)
 
+set(CMAKE_C_FLAGS "-nostdinc -m32 -nostdlib -Wall -Wextra -fverbose-asm -fno-exceptions -fno-pic -fno-stack-protector")
+
 if (CMAKE_BUILD_TYPE STREQUAL "Debug")
-    set(CMAKE_C_FLAGS "-nostdinc -m32 -nostdlib -Wall -g -O0 -fverbose-asm -fno-exceptions -fno-pic -fno-stack-protector")
+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -g")
 elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
-    set(CMAKE_C_FLAGS "-nostdinc -m32 -nostdlib -Wall -O -fverbose-asm -fno-exceptions -fno-pic -fno-stack-protector")
+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O")
 endif()
 
 include_directories(${PROJECT_SOURCE_DIR}/include)

+ 2 - 2
include/kernel/stdio.h

@@ -2,13 +2,13 @@
 
 #include <types/stdint.h>
 
-size_t
+ssize_t
 snprint_decimal(
     char* buf,
     size_t buf_size,
     int32_t num);
 
-size_t
+ssize_t
 snprintf(
     char* buf,
     size_t buf_size,

+ 7 - 7
src/kernel/stdio.c

@@ -47,13 +47,13 @@ static inline char X_to_c(int32_t n)
         --(y);                    \
     }
 
-size_t
+ssize_t
 snprint_decimal(
     char* buf,
     size_t buf_size,
     int32_t num)
 {
-    size_t n_write = 0;
+    ssize_t n_write = 0;
 
     if (num < 0) {
         do_write_if_free(buf, buf_size, '-');
@@ -88,14 +88,14 @@ snprint_decimal(
     return n_write;
 }
 
-size_t
+ssize_t
 snprint_hex(
     char* buf,
     size_t buf_size,
     uint32_t num,
     int32_t capitalized)
 {
-    size_t n_write = 0;
+    ssize_t n_write = 0;
 
     char* orig_buf = buf;
 
@@ -128,7 +128,7 @@ snprint_hex(
     return n_write;
 }
 
-static inline size_t
+static inline ssize_t
 snprint_char(
     char* buf,
     size_t buf_size,
@@ -139,14 +139,14 @@ snprint_char(
     return sizeof(c);
 }
 
-size_t
+ssize_t
 snprintf(
     char* buf,
     size_t buf_size,
     const char* fmt,
     ...)
 {
-    size_t n_write = 0;
+    ssize_t n_write = 0;
     void* arg_ptr = ((void*)&buf) + sizeof(char*) + sizeof(size_t) + sizeof(const char*);
 
     for (char c; (c = *fmt) != 0x00; ++fmt) {

+ 1 - 1
src/types/buffer.c

@@ -10,7 +10,7 @@ ring_buffer_empty(struct ring_buffer* buf)
 int32_t
 ring_buffer_full(struct ring_buffer* buf)
 {
-    return (buf->count == (buf->buf_end_pos - buf->buf_start_pos + 1));
+    return (buf->count == (size_t)(buf->buf_end_pos - buf->buf_start_pos + 1));
 }
 
 static inline void