mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-04 20:04:50 +00:00
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
This commit is contained in:
@@ -354,10 +354,9 @@ static int inotify_fd = -1;
|
|||||||
|
|
||||||
static void *inotify_daemon(void *data)
|
static void *inotify_daemon(void *data)
|
||||||
{
|
{
|
||||||
struct {
|
/* inotify_event is dynamically sized */
|
||||||
struct inotify_event iev;
|
struct inotify_event *iev;
|
||||||
char name[FILENAME_MAX + 1];
|
size_t real_sizeof_iev = sizeof(*iev) + FILENAME_MAX + 1;
|
||||||
} buf;
|
|
||||||
ssize_t res;
|
ssize_t res;
|
||||||
struct state *cur;
|
struct state *cur;
|
||||||
|
|
||||||
@@ -372,14 +371,15 @@ static void *inotify_daemon(void *data)
|
|||||||
inotify_thread = AST_PTHREADT_NULL;
|
inotify_thread = AST_PTHREADT_NULL;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
iev = ast_alloca(real_sizeof_iev);
|
||||||
|
|
||||||
common_startup();
|
common_startup();
|
||||||
|
|
||||||
for (;/*ever*/;) {
|
for (;/*ever*/;) {
|
||||||
/* This read should block, most of the time. */
|
/* 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 */
|
/* 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;
|
break;
|
||||||
} else if (res < 0) {
|
} else if (res < 0) {
|
||||||
if (errno == EINTR || errno == EAGAIN) {
|
if (errno == EINTR || errno == EAGAIN) {
|
||||||
@@ -395,7 +395,7 @@ static void *inotify_daemon(void *data)
|
|||||||
}
|
}
|
||||||
AST_LIST_LOCK(&zonelist);
|
AST_LIST_LOCK(&zonelist);
|
||||||
AST_LIST_TRAVERSE_SAFE_BEGIN(&zonelist, cur, list) {
|
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);
|
AST_LIST_REMOVE_CURRENT(list);
|
||||||
sstate_free(cur);
|
sstate_free(cur);
|
||||||
break;
|
break;
|
||||||
|
Reference in New Issue
Block a user