зеркало из https://github.com/mozilla/gecko-dev.git
Impl fixes; don't try to clone/makeImmutable null interface members
This commit is contained in:
Родитель
8f242803c5
Коммит
c9da6321d8
|
@ -10,6 +10,7 @@ calEvent.prototype = {
|
|||
!aIID.equals(Components.interfaces.calIItemBase) &&
|
||||
!aIID.equals(Components.interfaces.calIEvent))
|
||||
{
|
||||
dump ("calEvent QI failed to " + aIID + "\n");
|
||||
throw Components.results.NS_ERROR_NO_INTERFACE;
|
||||
}
|
||||
|
||||
|
@ -19,13 +20,26 @@ calEvent.prototype = {
|
|||
clone: function () {
|
||||
var m = new calEvent();
|
||||
this.cloneItemBaseInto(m);
|
||||
m.mStartDate = this.mStartDate.clone();
|
||||
m.mEndDate = this.mEndDate.clone();
|
||||
m.mStampDate = this.mStampDate.clone();
|
||||
if (this.mStartDate)
|
||||
m.mStartDate = this.mStartDate.clone();
|
||||
if (this.mEndDate)
|
||||
m.mEndDate = this.mEndDate.clone();
|
||||
if (this.mStampDate)
|
||||
m.mStampDate = this.mStampDate.clone();
|
||||
|
||||
return m;
|
||||
},
|
||||
|
||||
makeImmutable: function () {
|
||||
if (this.mStartDate)
|
||||
this.mStartDate.makeImmutable();
|
||||
if (this.mEndDate)
|
||||
this.mEndDate.makeImmutable();
|
||||
if (this.mStampDate)
|
||||
this.mStampDate.makeImmutable();
|
||||
this.makeItemBaseImmutable();
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -55,6 +55,7 @@ calEvent.prototype = {
|
|||
!aIID.equals(Components.interfaces.calIItemBase) &&
|
||||
!aIID.equals(Components.interfaces.calIEvent))
|
||||
{
|
||||
dump ("calEvent QI failed to " + aIID + "\n");
|
||||
throw Components.results.NS_ERROR_NO_INTERFACE;
|
||||
}
|
||||
|
||||
|
@ -64,13 +65,26 @@ calEvent.prototype = {
|
|||
clone: function () {
|
||||
var m = new calEvent();
|
||||
this.cloneItemBaseInto(m);
|
||||
m.mStartDate = this.mStartDate.clone();
|
||||
m.mEndDate = this.mEndDate.clone();
|
||||
m.mStampDate = this.mStampDate.clone();
|
||||
if (this.mStartDate)
|
||||
m.mStartDate = this.mStartDate.clone();
|
||||
if (this.mEndDate)
|
||||
m.mEndDate = this.mEndDate.clone();
|
||||
if (this.mStampDate)
|
||||
m.mStampDate = this.mStampDate.clone();
|
||||
|
||||
return m;
|
||||
},
|
||||
|
||||
makeImmutable: function () {
|
||||
if (this.mStartDate)
|
||||
this.mStartDate.makeImmutable();
|
||||
if (this.mEndDate)
|
||||
this.mEndDate.makeImmutable();
|
||||
if (this.mStampDate)
|
||||
this.mStampDate.makeImmutable();
|
||||
this.makeItemBaseImmutable();
|
||||
},
|
||||
|
||||
#define MEMBER_ATTR(varname, initvalue, attrname) \
|
||||
varname: initvalue, \
|
||||
get attrname() { return this.varname; }, \
|
||||
|
|
|
@ -13,14 +13,18 @@ calItemBase.prototype = {
|
|||
|
||||
mImmutable: false,
|
||||
get isMutable() { return this. mImmutable; },
|
||||
makeImmutable: function() {
|
||||
|
||||
makeItemBaseImmutable: function() {
|
||||
if (this.mImmutable)
|
||||
throw Components.results.NS_ERROR_FAILURE;
|
||||
|
||||
|
||||
this.mCreationDate.makeImmutable();
|
||||
this.mRecurrenceInfo.makeImmutable();
|
||||
this.mAlarmTime.makeImmutable();
|
||||
if (this.mCreationDate)
|
||||
this.mCreationDate.makeImmutable();
|
||||
if (this.mRecurrenceInfo)
|
||||
this.mRecurrenceInfo.makeImmutable();
|
||||
if (this.mAlarmTime)
|
||||
this.mAlarmTime.makeImmutable();
|
||||
|
||||
this.mImmutable = true;
|
||||
},
|
||||
|
@ -39,10 +43,13 @@ calItemBase.prototype = {
|
|||
m.mMethod = this.mMethod;
|
||||
m.mStatus = this.mStatus;
|
||||
m.mHasAlarm = this.mHasAlarm;
|
||||
m.mRecurrenceInfo = this.mRecurrenceInfo.clone();
|
||||
|
||||
m.mCreationDate = this.mCreationDate.clone();
|
||||
m.mAlarmTime = this.mAlarmTime.clone();
|
||||
if (this.mRecurrenceInfo)
|
||||
m.mRecurrenceInfo = this.mRecurrenceInfo.clone();
|
||||
if (this.mCreationDate)
|
||||
m.mCreationDate = this.mCreationDate.clone();
|
||||
if (this.mAlarmTime)
|
||||
m.mAlarmTime = this.mAlarmTime.clone();
|
||||
|
||||
|
||||
m.mAttachments = this.mAttachments;
|
||||
|
|
|
@ -55,14 +55,18 @@ calItemBase.prototype = {
|
|||
|
||||
mImmutable: false,
|
||||
get isMutable() { return this. mImmutable; },
|
||||
makeImmutable: function() {
|
||||
|
||||
makeItemBaseImmutable: function() {
|
||||
if (this.mImmutable)
|
||||
throw Components.results.NS_ERROR_FAILURE;
|
||||
|
||||
// make all our components immutable
|
||||
this.mCreationDate.makeImmutable();
|
||||
this.mRecurrenceInfo.makeImmutable();
|
||||
this.mAlarmTime.makeImmutable();
|
||||
if (this.mCreationDate)
|
||||
this.mCreationDate.makeImmutable();
|
||||
if (this.mRecurrenceInfo)
|
||||
this.mRecurrenceInfo.makeImmutable();
|
||||
if (this.mAlarmTime)
|
||||
this.mAlarmTime.makeImmutable();
|
||||
|
||||
this.mImmutable = true;
|
||||
},
|
||||
|
@ -81,10 +85,13 @@ calItemBase.prototype = {
|
|||
m.mMethod = this.mMethod;
|
||||
m.mStatus = this.mStatus;
|
||||
m.mHasAlarm = this.mHasAlarm;
|
||||
m.mRecurrenceInfo = this.mRecurrenceInfo.clone();
|
||||
|
||||
m.mCreationDate = this.mCreationDate.clone();
|
||||
m.mAlarmTime = this.mAlarmTime.clone();
|
||||
if (this.mRecurrenceInfo)
|
||||
m.mRecurrenceInfo = this.mRecurrenceInfo.clone();
|
||||
if (this.mCreationDate)
|
||||
m.mCreationDate = this.mCreationDate.clone();
|
||||
if (this.mAlarmTime)
|
||||
m.mAlarmTime = this.mAlarmTime.clone();
|
||||
|
||||
// these need fixing
|
||||
m.mAttachments = this.mAttachments;
|
||||
|
@ -96,7 +103,7 @@ calItemBase.prototype = {
|
|||
|
||||
#define MEMBER_ATTR(varname, initvalue, attrname) \
|
||||
varname: initvalue, \
|
||||
get attrname() { return this.varname; }, \
|
||||
get attrname() { return this.varname; }, \
|
||||
set attrname(v) { if (this.mImmutable) throw Components.results.NS_ERROR_FAILURE; else this.varname = v; }
|
||||
|
||||
MEMBER_ATTR(mGeneration, 0, generation),
|
||||
|
|
Загрузка…
Ссылка в новой задаче