summaryrefslogtreecommitdiff
path: root/main/stdtime
diff options
context:
space:
mode:
authorMatthew Jordan <mjordan@digium.com>2015-03-30 01:53:15 +0000
committerMatthew Jordan <mjordan@digium.com>2015-03-30 01:53:15 +0000
commit1cf949c48992ed2b7b9e6aed1a94096e69328152 (patch)
tree48cef4cefff12fcb48c27949be60e0f9b842101a /main/stdtime
parentd2776d4d456af2c332657852a1bbbd56c52b93e9 (diff)
clang compiler warnings: Fix warning for -Wgnu-variable-sized-type-not-at-end
This patch fixes a warning caught by clang, wherein a variable sized struct is not located at the end of a struct. While the code in question actually expected this, this is a good warning to watch for. Hence, this patch refactors the code in question to not have two variable length elements in the same struct. Review: https://reviewboard.asterisk.org/r/4530/ ASTERISK-24917 Reported by: dkdegroot patches: rb4530.patch submitted by dkdegroot (License 6600) ........ Merged revisions 433717 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 433718 from http://svn.asterisk.org/svn/asterisk/branches/13 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433719 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/stdtime')
-rw-r--r--main/stdtime/localtime.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/main/stdtime/localtime.c b/main/stdtime/localtime.c
index 969c59749..2cd5003d1 100644
--- a/main/stdtime/localtime.c
+++ b/main/stdtime/localtime.c
@@ -354,10 +354,9 @@ static int inotify_fd = -1;
static void *inotify_daemon(void *data)
{
- struct {
- struct inotify_event iev;
- char name[FILENAME_MAX + 1];
- } buf;
+ /* inotify_event is dynamically sized */
+ struct inotify_event *iev;
+ size_t real_sizeof_iev = sizeof(*iev) + FILENAME_MAX + 1;
ssize_t res;
struct state *cur;
@@ -372,14 +371,15 @@ static void *inotify_daemon(void *data)
inotify_thread = AST_PTHREADT_NULL;
return NULL;
}
+ iev = ast_alloca(real_sizeof_iev);
common_startup();
for (;/*ever*/;) {
/* This read should block, most of the time. */
- if ((res = read(inotify_fd, &buf, sizeof(buf))) < sizeof(buf.iev) && res > 0) {
+ if ((res = read(inotify_fd, &iev, real_sizeof_iev)) < sizeof(*iev) && res > 0) {
/* This should never happen */
- ast_log(LOG_ERROR, "Inotify read less than a full event (%zd < %zu)?!!\n", res, sizeof(buf.iev));
+ ast_log(LOG_ERROR, "Inotify read less than a full event (%zd < %zu)?!!\n", res, sizeof(*iev));
break;
} else if (res < 0) {
if (errno == EINTR || errno == EAGAIN) {
@@ -395,7 +395,7 @@ static void *inotify_daemon(void *data)
}
AST_LIST_LOCK(&zonelist);
AST_LIST_TRAVERSE_SAFE_BEGIN(&zonelist, cur, list) {
- if (cur->wd[0] == buf.iev.wd || cur->wd[1] == buf.iev.wd) {
+ if (cur->wd[0] == iev->wd || cur->wd[1] == iev->wd) {
AST_LIST_REMOVE_CURRENT(list);
sstate_free(cur);
break;