This page contains unofficial updates to the latest version of OWLNext.
The latest official patch is 6.12 and can be downloaded here. NEW - most of these changes are incorporated in the new version, 6.13. A patch which upgrades OWLNext from 6.12 to 6.13 can be downloaded from OWLNext site.
#if (WINVER >= 0x0400)
	DocInfo.lpszDatatype = NULL;
#endif
	
	before the return statement.
	
	
inline void TComboBox::SetHorizontalExtent(int horzExtent) {
  PRECONDITION(GetHandle());
#if defined(BI_PLAT_WIN32)
  SendMessage(CB_SETHORIZONTALEXTENT);
#else
  //
#endif
}
	
	does not use the horzExtent parameter. The call to SendMessage() should be
	
  SendMessage(CB_SETHORIZONTALEXTENT,horzExtent);
	
	
	#if defined(__DLL__) || defined(_DLL)
	# define BI_APP_DLL
	#else
	# define BI_APP_EXECUTABLE
	#endif
	
	is incorrect. Under MSVC, _WINDLL is defined when building DLL, so 
	#if defined(__DLL__) || defined(_DLL) should be replaced with #if defined(__DLL__) || defined(_WINDLL)
	
	
	#if (__BORLANDC__ >= 0x550)
	# define NO_BI_STDIO_CTRFNUM
	#endif
	
	before the lines
	
	#if (__BORLANDC__ >= 0x540)
	# define BI_HAS_MEMBER_TEMPLATE
	#endif
	
	
	
	
	buffer[size] = '\0';	
	
	
	at the end of the function TRegConfigFile::ReadString(), before the statement
	
	return (int)size;
	
	
	Also, when writing string values to the registry, it is recommended that the null-terminator is included
	in the buffer length. This can be fixed by changing the line
	
	uint32 size = ::_tcslen(value)*sizeof(_TCHAR);
	
	with
	
	uint32 size = (::_tcslen(value) + 1)*sizeof(_TCHAR);
	
	in the function TRegConfigFile::WriteString()
	
	#define EV_LVN_ENDLABELEDIT(id, method)     EV_LISTWIND_NOTIFY_BOOL(id, LVN_ENDLABELEDIT, method)
	
	with
	
	
	#define EV_LVN_ENDLABELEDIT(id, method)     EV_LV_DISPINFO_NOTIFY_BOOL(id, LVN_ENDLABELEDIT, method)
	
	
	in the file owl\commctrl.h
	
	
	
bool		Erase()   { return File.EraseSection(Section.c_str());  }
	
	
	
	
	
    bool IsDir() const;
    bool IsSysDir() const;//true if it is the "." or ".." system directory; 
	
	with implementation:
	
inline bool TFileNameIterator::IsDir() const
{ 
  return Status.attribute & FILE_ATTRIBUTE_DIRECTORY; 
} 
//Returns true if it is a directory and the directory is "." or ".."; 
inline bool TFileNameIterator::IsSysDir() const
{  
  const char* p = Status.fullName;
  return IsDir() && p[0]=='.' &&
          (p[1]=='\0' || p[1]=='.' && p[2]=='\0');
}    
	
	
	
bool AddSubDir(LPCTSTR subdir);
bool AddSubDir(const owl_string& subdir);
	
	in the declaration of the class TFileName, preferably after the function CreateDir().
	In filename.cpp add the lines
bool
TFileName::AddSubDir(LPCTSTR subdir)
{
  if (_tcschr(dirSeparator, subdir[0]) == 0) // The subdir does not begin with the separator
    PathStr += dirSeparatorStr;
  PathStr += subdir;
  if (_tcschr(dirSeparator, PathStr[PathStr.length() - 1]) != 0)  // The resultring string ends with the separator
    PathStr = PathStr.substr(0, PathStr.length() - 1);
  return true;
}
bool
TFileName::AddSubDir(const owl_string& subdir)
{
  return AddSubDir(subdir.c_str());
}
	preferably after the definition of the function CreateDir().
	#ifdef _MSC_VER  
	#   pragma once 
	#endif 
	
	at the start of all OWLNext header files.