|
From: <ale...@us...> - 2013-02-18 11:06:58
|
Revision: 57670
http://sourceforge.net/p/firebird/code/57670
Author: alexpeshkoff
Date: 2013-02-18 11:06:52 +0000 (Mon, 18 Feb 2013)
Log Message:
-----------
A number of fixes related with ICoerceMetadata interface - thanks to Adriano
Modified Paths:
--------------
firebird/trunk/src/common/MsgMetadata.cpp
firebird/trunk/src/include/firebird/Provider.h
Modified: firebird/trunk/src/common/MsgMetadata.cpp
===================================================================
--- firebird/trunk/src/common/MsgMetadata.cpp 2013-02-18 08:27:54 UTC (rev 57669)
+++ firebird/trunk/src/common/MsgMetadata.cpp 2013-02-18 11:06:52 UTC (rev 57670)
@@ -87,6 +87,11 @@
{
MutexLockGuard g(mtx, FB_FUNCTION);
+ if (metadataError(status, "getMetadata"))
+ {
+ return NULL;
+ }
+
msgMetadata->makeOffsets();
IMessageMetadata* rc = msgMetadata;
rc->addRef();
@@ -98,7 +103,7 @@
RefPtr<MsgMetadata> msgMetadata;
Mutex mtx;
- bool indexError(IStatus* status, unsigned index, const char* functionName)
+ bool metadataError(IStatus* status, const char* functionName)
{
if (!msgMetadata)
{
@@ -107,8 +112,18 @@
return true;
}
- if (index < msgMetadata->items.getCount())
+ return false;
+ }
+
+ bool indexError(IStatus* status, unsigned index, const char* functionName)
+ {
+ if (metadataError(status, functionName))
{
+ return true;
+ }
+
+ if (index >= msgMetadata->items.getCount())
+ {
status->set((Arg::Gds(isc_invalid_index_val) <<
Arg::Num(index) << (string("ICoerceMetadata::") + functionName)).value());
return true;
Modified: firebird/trunk/src/include/firebird/Provider.h
===================================================================
--- firebird/trunk/src/include/firebird/Provider.h 2013-02-18 08:27:54 UTC (rev 57669)
+++ firebird/trunk/src/include/firebird/Provider.h 2013-02-18 11:06:52 UTC (rev 57670)
@@ -120,6 +120,7 @@
class ICoerceMetadata : public IRefCounted
{
+public:
virtual void FB_CARG setType(IStatus* status, unsigned index, unsigned type) = 0;
virtual void FB_CARG setSubType(IStatus* status, unsigned index, unsigned subType) = 0;
virtual void FB_CARG setLength(IStatus* status, unsigned index, unsigned length) = 0;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|