1
0
Fork 0
mirror of git://git.psyced.org/git/psyclpc synced 2024-08-15 03:20:16 +00:00

pkg-psyc: incomplete packet parsing - return 0 when not finished

This commit is contained in:
Gabor Adam Toth 2011-05-19 18:50:22 +02:00
parent dbe6e0a453
commit 79c479b563
2 changed files with 17 additions and 17 deletions

View file

@ -17,10 +17,9 @@
debug_message(sprintf("p1: libpsyc returned %O\n", p1));
mixed *p2 = psyc_parse("ing\n_notice_test_libpsyc\nJust [_topic] libpsyc.\n|\n");
debug_message(sprintf("p2: libpsyc returned %O\n", p2));
mixed *p = ({ p1[0]+p2[0], p1[1]+p2[1],
(p1[2]||"") + p2[2], (p1[3]||"") + p2[3] });
mixed pr = psyc_render(p);
debug_message(sprintf("libpsyc returned %O (%s)\n", p,
mixed pr = psyc_render(p2);
debug_message(sprintf("libpsyc returned %O (%s)\n", p2,
pr == s ? "SUCCESS": "FAIL!"));
string ls = ":_context\ttest\n\n:_list_foo\t|foo|bar|baz\n:_list_bar\t\n_notice_test_libpsyc\nJust [_topic] libpsyc.\n|\n";
@ -239,18 +238,21 @@ f_psyc_parse (svalue_t *sp) {
errorf("\npsyc_parse got type %d, not supported\n", sp->type);
}
free_svalue(sp);
if (!state->packet) {
state->packet = allocate_array(4);
if (!state->packet) errorf("Out of memory for psyc_parse array.\n");
}
v = state->packet;
v = state->packet;
map = allocate_mapping(0, 1); // empty mapping
if (!map) errorf("Out of memory for psyc_parse routing header.\n");
put_mapping(&v->item[PACKET_ROUTING], map);
map = allocate_mapping(0, 1); // empty mapping
if (!map) errorf("Out of memory for psyc_parse entity header.\n");
put_mapping(&v->item[PACKET_ENTITY], map);
map = allocate_mapping(0, 1); // empty mapping
if (!map) errorf("Out of memory for psyc_parse routing header.\n");
put_mapping(&v->item[PACKET_ROUTING], map);
map = allocate_mapping(0, 1); // empty mapping
if (!map) errorf("Out of memory for psyc_parse entity header.\n");
put_mapping(&v->item[PACKET_ENTITY], map);
} else
v = state->packet;
do {
ret = psyc_parse(state->parser, &oper, &name, &value);
@ -359,6 +361,7 @@ f_psyc_parse (svalue_t *sp) {
case PSYC_PARSE_COMPLETE:
state->packet = NULL;
put_array(sp, v);
ret = 0;
break;
@ -373,6 +376,7 @@ f_psyc_parse (svalue_t *sp) {
} else
state->remaining = NULL;
put_number(sp, 0);
ret = 0;
break;
@ -431,11 +435,7 @@ f_psyc_parse (svalue_t *sp) {
if (buffer)
pfree(buffer);
free_svalue(sp);
put_array(sp, v);
state->packet = 0;
return sp;
} /* f_psyc_parse */
#endif /* USE_PSYC */

View file

@ -17,7 +17,7 @@ version_longtype="stable"
# A timestamp, to be used by bumpversion and other scripts.
# It can be used, for example, to 'touch' this file on every build, thus
# forcing revision control systems to add it on every checkin automatically.
version_stamp="Fri May 13 23:10:29 CEST 2011"
version_stamp="Thu May 19 18:45:43 CEST 2011"
# Okay, LDMUD is using 3.x.x so to avoid conflicts let's just use 4.x.x
version_major=4