diff --git a/scapy/asn1packet.py b/scapy/asn1packet.py
index 460decb33be0c001d8e7f178219e117239580d8e..4c476d2a5f52e66f701450ffc4aefb475f10c0cc 100644
--- a/scapy/asn1packet.py
+++ b/scapy/asn1packet.py
@@ -17,6 +17,8 @@ class ASN1_Packet(Packet):
         self.do_init_fields(flist)
         self.fields_desc = flist    
     def self_build(self):
+        if self.raw_packet_cache is not None:
+            return self.raw_packet_cache
         return self.ASN1_root.build(self)    
     def do_dissect(self, x):
         return self.ASN1_root.dissect(self, x)