summaryrefslogtreecommitdiff
path: root/sot
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2015-04-30 10:20:00 +0200
committerStephan Bergmann <sbergman@redhat.com>2015-04-30 10:20:00 +0200
commit3ead3ad52f9bb2f9d1d6cf8dfc73a0a25e6778ed (patch)
treebdfd28afe5a452060e3d985c5f01b45f4b7bc2cd /sot
parent57d254d42b6e1d836bd21e6fb2e968af2b511c7d (diff)
Gradually typed Link
Turn the Link class into a template abstracting over the link's argument and return types, but provide default template arguments that keep the generic, unsafe "void* in, sal_IntPtr out" behvior. That way, individual uses of the Link class can be updated over time. All the related macros are duplicated with ..._TYPED counterparts, that additionally take the RetType (except for LINK_TYPED, which manages to infer the relevant types from the supplied Member). (It would have been attractive to change the "untyped" LinkStubs from taking a void* to a properly typed ArgType parameter, too, but that would cause -fsanitize=function to flag uses of "untyped" Link::Call.) Change-Id: I3b0140378bad99abbf240140ebb4a46a05d2d2f8
Diffstat (limited to 'sot')
-rw-r--r--sot/source/sdstor/stg.cxx2
-rw-r--r--sot/source/sdstor/stgio.cxx6
-rw-r--r--sot/source/sdstor/stgio.hxx4
3 files changed, 6 insertions, 6 deletions
diff --git a/sot/source/sdstor/stg.cxx b/sot/source/sdstor/stg.cxx
index 0f86bd0d5631..a3e20858b1e4 100644
--- a/sot/source/sdstor/stg.cxx
+++ b/sot/source/sdstor/stg.cxx
@@ -1019,7 +1019,7 @@ bool Storage::ShouldConvert()
bool Storage::ValidateFAT()
{
- Link aLink = StgIo::GetErrorLink();
+ Link<> aLink = StgIo::GetErrorLink();
ErrCode nErr = pIo->ValidateFATs();
StgIo::SetErrorLink( aLink );
return nErr == ERRCODE_NONE;
diff --git a/sot/source/sdstor/stgio.cxx b/sot/source/sdstor/stgio.cxx
index b9671bf0f33c..11f391efe0fb 100644
--- a/sot/source/sdstor/stgio.cxx
+++ b/sot/source/sdstor/stgio.cxx
@@ -337,14 +337,14 @@ sal_uLong Validator::FindUnrefedChains()
return FAT_OK;
}
-namespace { struct ErrorLink : public rtl::Static<Link, ErrorLink > {}; }
+namespace { struct ErrorLink : public rtl::Static<Link<>, ErrorLink > {}; }
-void StgIo::SetErrorLink( const Link& rLink )
+void StgIo::SetErrorLink( const Link<>& rLink )
{
ErrorLink::get() = rLink;
}
-const Link& StgIo::GetErrorLink()
+const Link<>& StgIo::GetErrorLink()
{
return ErrorLink::get();
}
diff --git a/sot/source/sdstor/stgio.hxx b/sot/source/sdstor/stgio.hxx
index 511f26af2b3a..8922d809cc01 100644
--- a/sot/source/sdstor/stgio.hxx
+++ b/sot/source/sdstor/stgio.hxx
@@ -64,8 +64,8 @@ public:
bool Init(); // set up an empty file
bool CommitAll(); // commit everything (root commit)
- static void SetErrorLink( const Link& );
- static const Link& GetErrorLink();
+ static void SetErrorLink( const Link<>& );
+ static const Link<>& GetErrorLink();
sal_uLong ValidateFATs( );
};