Dialplan functions should not actually return 0, unless they have modified the

workspace.  To signal an error (and no change to the workspace), -1 should be
returned instead.
(closes issue #13340)
 Reported by: kryptolus
 Patches: 
       20080827__bug13340__2.diff.txt uploaded by Corydon76 (license 14)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@146799 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Tilghman Lesher
2008-10-06 20:52:04 +00:00
parent 850cd15e26
commit 93ef1ee4ef
11 changed files with 54 additions and 18 deletions

View File

@@ -193,8 +193,11 @@ static int speech_text(struct ast_channel *chan, char *cmd, char *data,
if (data == NULL || speech == NULL || !(result = find_result(speech->results, data)))
return -1;
if (result->text != NULL)
if (result->text != NULL) {
ast_copy_string(buf, result->text, len);
} else {
buf[0] = '\0';
}
return 0;
}
@@ -219,8 +222,11 @@ static int speech_grammar(struct ast_channel *chan, char *cmd, char *data,
if (data == NULL || speech == NULL || !(result = find_result(speech->results, data)))
return -1;
if (result->grammar != NULL)
if (result->grammar != NULL) {
ast_copy_string(buf, result->grammar, len);
} else {
buf[0] = '\0';
}
return 0;
}
@@ -322,6 +328,8 @@ static int speech_read(struct ast_channel *chan, char *cmd, char *data,
}
snprintf(tmp, sizeof(tmp), "%d", results);
ast_copy_string(buf, tmp, len);
} else {
buf[0] = '\0';
}
return 0;