Fixup extension / longoffset
diff --git a/Lib/fontTools/ttLib/tables/otBase.py b/Lib/fontTools/ttLib/tables/otBase.py
index 4eb74ac..44fcaa1 100644
--- a/Lib/fontTools/ttLib/tables/otBase.py
+++ b/Lib/fontTools/ttLib/tables/otBase.py
@@ -219,7 +219,7 @@
 		l = 0
 		for item in self.items:
 			if hasattr(item, "getData") or hasattr(item, "getCountData"):
-				if self.longOffset:
+				if item.longOffset:
 					l = l + 4  # sizeof(ULong)
 				else:
 					l = l + 2  # sizeof(UShort)
@@ -236,7 +236,7 @@
 			item = items[i]
 			
 			if hasattr(item, "getData"):
-				if self.longOffset:
+				if item.longOffset:
 					items[i] = packULong(item.pos - pos)
 				else:
 					try:
diff --git a/Lib/fontTools/ttLib/tables/otConverters.py b/Lib/fontTools/ttLib/tables/otConverters.py
index 81d78c9..4c17237 100644
--- a/Lib/fontTools/ttLib/tables/otConverters.py
+++ b/Lib/fontTools/ttLib/tables/otConverters.py
@@ -180,7 +180,7 @@
 		return reader.readUShort()
 
 	def writeNullOffset(self, writer):
-		if hasattr(self, "Extension"):
+		if self.longOffset:
 			writer.writeULong(0)
 		else:
 			writer.writeUShort(0)
@@ -204,11 +204,11 @@
 		return table
 	
 	def write(self, writer, font, tableDict, value, repeatIndex=None):
-		writer.longOffset = self.longOffset
 		if value is None:
 			self.writeNullOffset(writer)
 		else:
 			subWriter = writer.getSubWriter()
+			subWriter.longOffset = self.longOffset
 			subWriter.name = self.name
 			if repeatIndex is not None:
 				subWriter.repeatIndex = repeatIndex