summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Dickmeiss <dickmeiss@php.net>2003-05-13 10:31:46 +0000
committerAdam Dickmeiss <dickmeiss@php.net>2003-05-13 10:31:46 +0000
commit46dbbff7f039bd1e292f96bbd8b71ad9f6df2d6d (patch)
tree4d91f975ea9cc5d62d4b965dccd8284e3c1b4be1
parente4ee44f8ab6f805a5c2793f97360a6aba8e61989 (diff)
downloadphp-git-46dbbff7f039bd1e292f96bbd8b71ad9f6df2d6d.tar.gz
Fix problem with yaz_record in array mode, when record is unavailable.
-rw-r--r--ext/yaz/php_yaz.c30
1 files changed, 16 insertions, 14 deletions
diff --git a/ext/yaz/php_yaz.c b/ext/yaz/php_yaz.c
index a6f1fd5102..99fd814f1a 100644
--- a/ext/yaz/php_yaz.c
+++ b/ext/yaz/php_yaz.c
@@ -939,16 +939,17 @@ PHP_FUNCTION(yaz_record)
if (r) {
if (!strcmp(type, "array")) {
Z_External *ext = (Z_External *) ZOOM_record_get(r, "ext", 0);
- oident *ent = oid_getentbyoid(ext->direct_reference);
-
- if (ext->which == Z_External_grs1 && ent->value == VAL_GRS1) {
- retval_grs1(return_value, ext->u.grs1);
- } else if (ext->which == Z_External_octet) {
- char *buf = (char *) (ext->u.octet_aligned->buf);
- ODR odr = odr_createmem(ODR_DECODE);
- Z_GenericRecord *rec = 0;
-
- switch (ent->value) {
+ if (ext) {
+ oident *ent = oid_getentbyoid(ext->direct_reference);
+
+ if (ext->which == Z_External_grs1 && ent->value == VAL_GRS1) {
+ retval_grs1(return_value, ext->u.grs1);
+ } else if (ext->which == Z_External_octet) {
+ char *buf = (char *) (ext->u.octet_aligned->buf);
+ ODR odr = odr_createmem(ODR_DECODE);
+ Z_GenericRecord *rec = 0;
+
+ switch (ent->value) {
case VAL_SOIF:
case VAL_HTML:
break;
@@ -958,11 +959,12 @@ PHP_FUNCTION(yaz_record)
break;
default:
rec = marc_to_grs1(buf, odr);
+ }
+ if (rec) {
+ retval_grs1(return_value, rec);
+ }
+ odr_destroy(odr);
}
- if (rec) {
- retval_grs1(return_value, rec);
- }
- odr_destroy(odr);
}
} else {
int rlen;