diff options
-rw-r--r-- | URPM.xs | 21 |
1 files changed, 10 insertions, 11 deletions
@@ -783,48 +783,47 @@ return_list_tag(URPM__Package pkg, const char *tag_name) { switch (tag) { case RPMTAG_NAME: { - if(get_fullname_parts_info(pkg, &name, &epoch, &version, &release, &arch, &disttag, &distepoch, &eos)) + get_fullname_parts_info(pkg, &name, &epoch, &version, &release, &arch, &disttag, &distepoch, &eos); + if(!strlen(name)) croak("invalid fullname"); XPUSHs(sv_2mortal(newSVpv(name, 0))); } break; case RPMTAG_EPOCH: { - if(get_fullname_parts_info(pkg, &name, &epoch, &version, &release, &arch, &disttag, &distepoch, &eos)) - croak("invalid fullname"); + get_fullname_parts_info(pkg, &name, &epoch, &version, &release, &arch, &disttag, &distepoch, &eos); XPUSHs(sv_2mortal(newSViv(epoch))); } case RPMTAG_VERSION: { - if(get_fullname_parts_info(pkg, &name, &epoch, &version, &release, &arch, &disttag, &distepoch, &eos)) + get_fullname_parts_info(pkg, &name, &epoch, &version, &release, &arch, &disttag, &distepoch, &eos); + if(!strlen(version)) croak("invalid fullname"); XPUSHs(sv_2mortal(newSVpv(version, 0))); } break; case RPMTAG_RELEASE: { - if(get_fullname_parts_info(pkg, &name, &epoch, &version, &release, &arch, &disttag, &distepoch, &eos)) + get_fullname_parts_info(pkg, &name, &epoch, &version, &release, &arch, &disttag, &distepoch, &eos); + if(!strlen(release)) croak("invalid fullname"); XPUSHs(sv_2mortal(newSVpv(release, 0))); } break; case RPMTAG_DISTTAG: { - if(get_fullname_parts_info(pkg, &name, &epoch, &version, &release, &arch, &disttag, &distepoch, &eos)) - croak("invalid fullname"); + get_fullname_parts_info(pkg, &name, &epoch, &version, &release, &arch, &disttag, &distepoch, &eos); XPUSHs(sv_2mortal(newSVpv(disttag, 0))); } break; case RPMTAG_DISTEPOCH: { - if(get_fullname_parts_info(pkg, &name, &epoch, &version, &release, &arch, &disttag, &distepoch, &eos)) - croak("invalid fullname"); + get_fullname_parts_info(pkg, &name, &epoch, &version, &release, &arch, &disttag, &distepoch, &eos); XPUSHs(sv_2mortal(newSVpv(distepoch, 0))); } break; case RPMTAG_ARCH: { - if(get_fullname_parts_info(pkg, &name, &epoch, &version, &release, &arch, &disttag, &distepoch, &eos)) - croak("invalid fullname"); + get_fullname_parts_info(pkg, &name, &epoch, &version, &release, &arch, &disttag, &distepoch, &eos); XPUSHs(sv_2mortal(newSVpv(arch, 0))); } break; |