Fix apparent breakage from r11593 (slot dep support):
* Handle KeyError from element.getAttribute() in makeAtom() and makeVersion().
* Avoid 'sre_constants.error: unmatched group' exceptions in revisionMatch()
  when the atom does not have a slot.

svn path=/main/trunk/; revision=11659
diff --git a/pym/portage/glsa.py b/pym/portage/glsa.py
index 33d3cf0..a16b98c 100644
--- a/pym/portage/glsa.py
+++ b/pym/portage/glsa.py
@@ -226,8 +226,13 @@
 	rValue = opMapping[versionNode.getAttribute("range")] \
 				+ pkgname \
 				+ "-" + getText(versionNode, format="strip")
-	if "slot" in versionNode.attributes and versionNode.getAttribute("slot") != "*":
-		rValue += ":"+versionNode.getAttribute("slot")
+	try:
+		slot = versionNode.getAttribute("slot").strip()
+	except KeyError:
+		pass
+	else:
+		if slot and slot != "*":
+			rValue += ":" + slot
 	return str(rValue)
 
 def makeVersion(versionNode):
@@ -243,8 +248,13 @@
 	"""
 	rValue = opMapping[versionNode.getAttribute("range")] \
 			+ getText(versionNode, format="strip")
-	if "slot" in versionNode.attributes and versionNode.getAttribute("slot") != "*":
-		rValue += ":"+versionNode.getAttribute("slot")
+	try:
+		slot = versionNode.getAttribute("slot").strip()
+	except KeyError:
+		pass
+	else:
+		if slot and slot != "*":
+			rValue += ":" + slot
 	return rValue
 
 def match(atom, dbapi, match_type="default"):
@@ -288,9 +298,15 @@
 	@return:	a list with the matching versions
 	"""
 	if match_type == "default" or not hasattr(dbapi, "xmatch"):
-		mylist = dbapi.match(re.sub(r'-r[0-9]+(:[^ ]+)?$', r'\1', revisionAtom[2:]))
+		if ":" in revisionAtom:
+			mylist = dbapi.match(re.sub(r'-r[0-9]+(:[^ ]+)?$', r'\1', revisionAtom[2:]))
+		else:
+			mylist = dbapi.match(re.sub("-r[0-9]+$", "", revisionAtom[2:]))
 	else:
-		mylist = dbapi.xmatch(match_type, re.sub(r'-r[0-9]+(:[^ ]+)?$', r'\1', revisionAtom[2:]))
+		if ":" in revisionAtom:
+			mylist = dbapi.xmatch(match_type, re.sub(r'-r[0-9]+(:[^ ]+)?$', r'\1', revisionAtom[2:]))
+		else:
+			mylist = dbapi.xmatch(match_type, re.sub("-r[0-9]+$", "", revisionAtom[2:]))
 	rValue = []
 	for v in mylist:
 		r1 = pkgsplit(v)[-1][1:]