diff options
| author | sin | 2015-03-13 14:22:41 +0000 |
|---|---|---|
| committer | sin | 2015-03-13 14:22:41 +0000 |
| commit | c2b0ad0bf55d5fe63c6e56e64cbd252a772dbbc0 (patch) | |
| tree | 40ee48fc065bc5c2baa8a94478cb72f36d514fd7 /include | |
| parent | 2b6657b759551ce485746d3e7f59725fa9f28dbf (diff) | |
Re-order vsnprintf() and vsprintf()
vsprintf() needs to access __vsnprintf_orig().
Diffstat (limited to 'include')
| -rw-r--r-- | include/stdio.h | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/include/stdio.h b/include/stdio.h index f5fb144..f157038 100644 --- a/include/stdio.h +++ b/include/stdio.h | |||
| @@ -54,6 +54,18 @@ size_t fwrite(const void *dst, size_t n, size_t nmemb, FILE *fp) | |||
| 54 | return __fwrite_orig(dst, n, nmemb, fp); | 54 | return __fwrite_orig(dst, n, nmemb, fp); |
| 55 | } | 55 | } |
| 56 | 56 | ||
| 57 | extern int __vsnprintf_orig(char *, size_t, const char *, __builtin_va_list) | ||
| 58 | __asm__(__USER_LABEL_PREFIX__ "vsnprintf"); | ||
| 59 | extern __inline __attribute__((__always_inline__,__gnu_inline__)) | ||
| 60 | int vsnprintf(char *s, size_t n, const char *fmt, __builtin_va_list ap) | ||
| 61 | { | ||
| 62 | size_t bos = __builtin_object_size(s, 0); | ||
| 63 | |||
| 64 | if (n > bos) | ||
| 65 | __builtin_trap(); | ||
| 66 | return __vsnprintf_orig(s, n, fmt, ap); | ||
| 67 | } | ||
| 68 | |||
| 57 | extern int __vsprintf_orig(char *, const char *, __builtin_va_list) | 69 | extern int __vsprintf_orig(char *, const char *, __builtin_va_list) |
| 58 | __asm__(__USER_LABEL_PREFIX__ "vsprintf"); | 70 | __asm__(__USER_LABEL_PREFIX__ "vsprintf"); |
| 59 | extern __inline __attribute__((__always_inline__,__gnu_inline__)) | 71 | extern __inline __attribute__((__always_inline__,__gnu_inline__)) |
| @@ -72,18 +84,6 @@ int vsprintf(char *s, const char *fmt, __builtin_va_list ap) | |||
| 72 | return r; | 84 | return r; |
| 73 | } | 85 | } |
| 74 | 86 | ||
| 75 | extern int __vsnprintf_orig(char *, size_t, const char *, __builtin_va_list) | ||
| 76 | __asm__(__USER_LABEL_PREFIX__ "vsnprintf"); | ||
| 77 | extern __inline __attribute__((__always_inline__,__gnu_inline__)) | ||
| 78 | int vsnprintf(char *s, size_t n, const char *fmt, __builtin_va_list ap) | ||
| 79 | { | ||
| 80 | size_t bos = __builtin_object_size(s, 0); | ||
| 81 | |||
| 82 | if (n > bos) | ||
| 83 | __builtin_trap(); | ||
| 84 | return __vsnprintf_orig(s, n, fmt, ap); | ||
| 85 | } | ||
| 86 | |||
| 87 | #undef snprintf | 87 | #undef snprintf |
| 88 | #define snprintf(s, n, fmt, ...) ({ \ | 88 | #define snprintf(s, n, fmt, ...) ({ \ |
| 89 | size_t _n = n; \ | 89 | size_t _n = n; \ |
