Index: ext/libicpf/src/libicpf/file.cpp
===================================================================
diff -u -N -rb337c059691a6940b52a86388ff427c734be8eb6 -r361d7f8b9268e18f39e298ea82425f7ddb24fb43
--- ext/libicpf/src/libicpf/file.cpp	(.../file.cpp)	(revision b337c059691a6940b52a86388ff427c734be8eb6)
+++ ext/libicpf/src/libicpf/file.cpp	(.../file.cpp)	(revision 361d7f8b9268e18f39e298ea82425f7ddb24fb43)
@@ -685,6 +685,8 @@
 {
 	// make sure everything is ok
 	assert(m_bSerializing && m_pbySerialBuffer != NULL);
+	if(!m_pbySerialBuffer)
+		THROW(_t("Invalid argument"), GE_INVALIDARG, 0, 0);
 
 	// check the operation type
 	if ((m_uiFlags & FA_READ) && (m_uiFlags & FA_WRITE))
@@ -956,6 +958,8 @@
 uint_t file::_read_packet()
 {
 	assert(m_hFile);
+	if(!m_hFile || !m_pbyBuffer)
+		THROW(_t("Invalid argument"), GE_INVALIDARG, 0, 0);
 
 	// read data
 #ifdef _WIN32
@@ -981,6 +985,8 @@
 uint_t file::_write_packet()
 {
 	assert(m_hFile);
+	if(!m_hFile || !m_pbyBuffer)
+		THROW(_t("Invalid argument"), GE_INVALIDARG, 0, 0);
 
 #ifdef _WIN32
 	DWORD wr=0;